Hallo,
Es ist nun fast anderthalb Monate her, dass ich mich zu Wort gemeldet habe. Ich habe mir gerade nochmal das YT-Video des letzten Beitrages angesehen und muss sagen, dass ich zwar nur schleppend vorankam, man aber deutlich die Fortschritte sehen sollte. Mittlerweile bin ich soweit, dass die Vorspieleinstellungen an sich komplett sind. Was halt noch fehlt, ist die Auswahl des Spielbrettes und die Minispiele, aber aufgrund des geringen Auswahl, sei dies erstmal zweitranging. Das meiste, was passiert ist, sieht man in dem neuen YT-Video am besten. Und man hört es auch. Dahingehend wird sich hier einiges doppeln. Aber macht ja nichts, ne? Hier erstmal der Link: http://www.youtube.com/watch?v=jQIbwkcp0gg (Achtung, die Qualität kann am Anfang noch gering sein) Einige "freiwillige und hochmotivierte" Probanten im DelphiGl-Chat und meine Freundin haben mir geholfen alles möglichst selbsterklärend, lesbar und vom Design ansprechend zu halten - auch was die Charaktergesichter betrifft.
Ein paar Feinheiten will ich noch näher erläutern:
Die einstellbaren Farben der Charaktere werden unanwählbar, wenn sie selbst oder eine ähnliche Farbe schon gewählt worden sind. Dabei musste ich viel mit "Ähnlichkeitsalgos" rumexperiementieren, eh ich folgende drei Bedingungen rudimentär erfüllen konnte:
1. Einfach und schnell: Eine Case-Anweisung für jede der 27 Farben wäre *schauder*
2. Terministisch: Am Anfang konnte es schonmal vorkommen, dass der 8. Spieler keine Farbe mehr zur Auswahl hatte ^_^
3. hohe Verschiedenheit: Man kann zwar immernoch bestimmt 4 verschiedene Blautöne gleichzeitig haben, aber ich hoffe, dass diese sich genug unterscheiden.
Die wähbaren CPU-Spieler berechnen sich aus der Anzahl der Spieler, der Größe der Teams und so, dass es mindestens 2 Teams gibt.
Ich habe probiert alles möglichst demokratisch zu halten. Wenn jeder Spieler etwas anderes wählt, geht es nicht weiter. Ich gehe davon aus, dass man sich mit Leuten, mit denen man so ein Spiel spielt, einigen kann, wie die Umgebungsvariablen des Spieles aussehen.
Bei den einstellbaren Sprachen (die erst auf dem Spielbrett zu Geltung kommen, wenn überhaupt), habe ich mich nach den Top 65 der gesprochenen Sprachen gerichtet. Vielleicht (wahrscheinlich) kürze ich die Liste nochmal auf die Top 20. Ansonsten steht es jedem Spieler später selbst frei, die Languages.ini nach seinen Bedürfnissen anzupassen...
Um die Demokratie überall aufrecht zu erhalten, kann jeder Spieler die Farben der CPU-Spieler neu erwürfeln. Eine Einzelauswahl gibt es nicht. Wer sollte auch das Recht haben sie einzustellen?
Mir fiel auf, dass das Wort "Smaragd" zu lang ist für kurze Texte auf runden Buttons. Zudem heißt er auf Englisch "Emerald". Erst nach der Übersetzung fiel mir auf, dass die Edelsteine in Sonic ja auch grün sind... >.< Diamanten sind sogar noch länger und zudem auch noch langweilig weiß. Ein Saphir würde jeden an Eragon errinnern - mich zumindest. So bin ich beim Rubin gelandet. Kurz, hübsch anzusehen und last but not least nicht so vorbelastet - hoffe ich.
Die CPU ist im Moment übrigens noch _sehr_ dämlich. Sie drückt einfach alles Tasten gleichzeitig (in der Fiktion) und somit sollte man im Skript die Reihenfolge der Abfragen beachten. Es gibt aber die Funktion op_iscpu( player_nr ), wodurch man zur Laufzeit Anpassungen vornehmen kann. So wartet der CPU-Spieler z.B. 2 Sekunden ehe er einen Rubin kauft oder abgewiesen wird, weil er nicht genug Münzen hat.
Der "Minispieldummy", den man im Video sieht, ist übrigens wirklich schon ein live zur Laufzeit geladenes Modul mit folgendem (bisherigen) Quelltext:
Code: typedef char unsigned bool; #include <SDL/SDL.h> #include <GL/gl.h> #include <GL/glu.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include "./../../zizutils/ttf/ttf.h" #include "./../../zizutils/zizwindow/zizwindow.h" #include "minigames.h" typedef struct sdata *pdata; typedef struct sdata { Sint32 zeit; Uint32 *steps; ZWtext text; } tdata; void op_gameinfos(pminigameinfo gameinfo) { } int op_get_gamedata_size(void) { return sizeof(tdata); } void op_init_game(pdata data,pgameinfo gameinfo) { data->steps=gameinfo->steps; data->zeit=5000; data->text.texture=gameinfo->texttexture; int a; for (a=0;a<256;a++) data->text.breite[a]=gameinfo->textwidth[a]; } int op_calc_game(pdata data) { return 0; } int op_calc_game_thread(pdata data) { data->zeit-=*(data->steps); if (data->zeit<=0) return 1; return 0; } void op_draw_game(pdata data) { char buffer[64]; sprintf(buffer,"In %i Dezisekunden geht es weiter",data->zeit/100); glColor4f(1,1,1,1); ZWdrawtextmiddle((ZWtext)(data->text),0, 0.2,-4,(char*)"Hier folgt bald ein Minispiel",0.4); ZWdrawtextmiddle((ZWtext)(data->text),0,-0.2,-4,buffer,0.4); } void op_reset_game(pdata data,pgameresult gameresult) { }
Das Ziel ist 3 richtige erste Minispiele zu erstellen, dann gibt es ein erstes Release. Ich bezweifle, dass ich dies noch in diesem Quartal schaffe, auch wenn es cool wäre, mir bei der Umfrage zum entsprechenden Award meine eigene Stimme abzuholen. ^_^
Naja, noch habe ich ja 8 Tage Zeit. Die ersten Minispiele werden eh noch sehr einfach werden und wahrscheinlich keine eigenen Texturen oder Objekte brauchen. Für son bisel 2D Pixel schubsen braucht es ansich nur eine 256x256 Textur.
Wünscht mir Glück, dass ich die Muße finde und mich auch ein wenig von der im Video hörbaren erkältung erhole. >.<
LG Ziz
|