Hoi allemaal!
We zitten als groep programmeurs tegen een probleem aan te kijken. Ik heb de afgelopen jaren aan een tool gewerkt waarmee men vele (meer dan honderd)verschillende archiefbestanden (hoofdzakelijk van spellen waar geluiden, graphics enzo instaan) kan openen en de inhoud extraheren of vervangen.
Om makkelijk nieuwe formaten te kunnen toevoegen heb ik twee simpele scripttalen geschreven gedurende de 6 jaar dat ik er in de hobbyuren aan gewerkt heb. Zo kon ik dan via het schrijven van een scriptje ondersteuning van een nieuw formaat bereiken zonder daarvoor de hoofd executable te moeten aanpassen.
Echter, nu willen we een nog veel betere (
) tool maken voor dit soort zaken. Met de "oude" tool kun je archieven ook aanpassen: je kunt bestanden in dat soort archieven vervangen. Helaas is het script en zijn engine niet zo krachtig dat het iets kan TOEvoegen of WEGnemen van zo'n archief, het kan alleen bestaande bestanden verVANGen.
Dit is geen probleem voor de gemiddelde gebruiker die een spel heeft gekocht en weleens voor de grap een texture in z'n spel wil vervangen met een texture met z'n naam erop. Het spel verwacht een archief dat een vast aantal files heeft, deleten/adden is natuurlijk uit den boze; een crash zou er zeker zijn als het archief opeens minder bestanden zou hebben.
Het is WEL een probleem programmeer technisch gezien, want feitelijk weet de oude engine helemaal niet hoe het archief formaat werkt. Het kan geen "New" functie aan, omdat het feitelijk een script programmaatje runt die bepaalde zaken kan destilleren uit zo'n archief, dat genoeg is om bestanden te extraheren of te vervangen, maar verder kan het niet.
De vraag is voor ons nu:
A. door gaan met een nieuw script, dat dit wel kan, maar hoe moet zo'n script eruit gaan zien?
Eigenlijk wil ik af van scripts, omdat die nooit echt krachtig genoeg zijn om alle formaten volledig te kunnen ondersteunen. Je kunt er voor kiezen om je scripttaal heel erg uitgebreid te maken, maar ja, dan ben je op een gegeven moment een nieuwe programmeertaal aan het schrijven, en dat is niet de bedoeling. Mijn idee is dan :
B. schrijf voor elk nieuw formaat een aparte handler (in ons geval geschreven in de programmeer taal Python) die gestandaardiseerde functies kent en waar de GUI gewoon altijd gebruik van kan maken. De onderliggende code is in elke handler dan wel anders, maar de functie-aanroepen zijn universeel. Dat kost meer tijd dan een simpel scriptje te schrijven, maar is wel veel effectiever en is hoog aanpasbaar.
Wat zijn de ideeen (als die er al zijn) over dit dillema? Ik vraag niet om kant en klare oplossingen, maar elke discussie kan iets opleveren!
Mike Zuurman AKA Mr.Mouse/XeNTaX
We zitten als groep programmeurs tegen een probleem aan te kijken. Ik heb de afgelopen jaren aan een tool gewerkt waarmee men vele (meer dan honderd)verschillende archiefbestanden (hoofdzakelijk van spellen waar geluiden, graphics enzo instaan) kan openen en de inhoud extraheren of vervangen.
Om makkelijk nieuwe formaten te kunnen toevoegen heb ik twee simpele scripttalen geschreven gedurende de 6 jaar dat ik er in de hobbyuren aan gewerkt heb. Zo kon ik dan via het schrijven van een scriptje ondersteuning van een nieuw formaat bereiken zonder daarvoor de hoofd executable te moeten aanpassen.
Echter, nu willen we een nog veel betere (
Dit is geen probleem voor de gemiddelde gebruiker die een spel heeft gekocht en weleens voor de grap een texture in z'n spel wil vervangen met een texture met z'n naam erop. Het spel verwacht een archief dat een vast aantal files heeft, deleten/adden is natuurlijk uit den boze; een crash zou er zeker zijn als het archief opeens minder bestanden zou hebben.
Het is WEL een probleem programmeer technisch gezien, want feitelijk weet de oude engine helemaal niet hoe het archief formaat werkt. Het kan geen "New" functie aan, omdat het feitelijk een script programmaatje runt die bepaalde zaken kan destilleren uit zo'n archief, dat genoeg is om bestanden te extraheren of te vervangen, maar verder kan het niet.
De vraag is voor ons nu:
A. door gaan met een nieuw script, dat dit wel kan, maar hoe moet zo'n script eruit gaan zien?
Eigenlijk wil ik af van scripts, omdat die nooit echt krachtig genoeg zijn om alle formaten volledig te kunnen ondersteunen. Je kunt er voor kiezen om je scripttaal heel erg uitgebreid te maken, maar ja, dan ben je op een gegeven moment een nieuwe programmeertaal aan het schrijven, en dat is niet de bedoeling. Mijn idee is dan :
B. schrijf voor elk nieuw formaat een aparte handler (in ons geval geschreven in de programmeer taal Python) die gestandaardiseerde functies kent en waar de GUI gewoon altijd gebruik van kan maken. De onderliggende code is in elke handler dan wel anders, maar de functie-aanroepen zijn universeel. Dat kost meer tijd dan een simpel scriptje te schrijven, maar is wel veel effectiever en is hoog aanpasbaar.
Wat zijn de ideeen (als die er al zijn) over dit dillema? Ik vraag niet om kant en klare oplossingen, maar elke discussie kan iets opleveren!
Mike Zuurman AKA Mr.Mouse/XeNTaX
"I go for the MultiEx Xperience, MEX" (tm) XeNTaX