|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dragon Super JLI'ler
Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 06.04.2005, 18:53 Titel: Vor dem Programmieren |
|
|
mich würde mal interessieren, was ihr macht bevor ihr anfängt mit den Programmieren eines spiels.
Macht ihr euch Skizzen, Klassendiagramme, Struktogramme und wenn ja, welche und wie? Macht ihr das auf einem extra Zettel oder doch elekronisch (z.B. Write, Calc)? Dokumentiert ihr eure Entwicklung?
Also ich hab immer einen block auch meinem Schreibtisch. Auf den Kritzel ich immer rum. Mach mir manchmal skizzen für Kollisionen und Modelle, die es später mal geben soll. Klassen stelle ich immer in Kästen da (nach UML) aber ohne Methode aber mit beziehungen und vererbung. Als Skizze mach ich mir auch immer, wie ein level aussehen soll.
Was macht ihr? Oder macht ihr gar nichts und programmiert einfach drauf los? _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 06.04.2005, 18:56 Titel: |
|
|
Ich durchdenke das ganz kurz und dann gehts ab
Das dabei was halbwegs anständiges rauskommt sieht man ja im Projekte Forum.
Grössere Dinge (Team) bespreche ich und plane sie natürlich. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 06.04.2005, 19:08 Titel: |
|
|
Hi,
bei mir Privat läuft das folgendermaßen ab:
Ich fange oft aus Langeweile einfach an kleine Hilfsklassen zu Coden die ich mir vorher im Kopf ausgedacht habe. Momentanes Beispiel: cpu
CPP: | // ###########################################################################
// Datei: cpu.h
// ###########################################################################
// Autor: Patrick Ullmann
// Erstellt: 05.04.2005
// Änderungen: 05.04.2005 (Patrick) Datei erstellt
// ###########################################################################
// Beschreibung: Helfer um die CPU zu erkennen
#if !defined(__cpu_h__)
#define __cpu_h__
// I N C L U D E S ###########################################################
#include <windows.h>
#include <cstdio>
#include <string>
// S T R U K T U R E N #######################################################
class cpu
{
private:
// Con- und Destructor
cpu (void);
cpu (const cpu& other);
~cpu (void);
// Es gibt nur eine Instanz. Jede Zuweisung wäre eine Selbstzuweisung.
// Da Selbstzuweisungen selten Sinn machen, ist der op= privat
cpu& operator= (const cpu& other);
public:
// Diese statische Methode erzeugt die einzige Instanz.
// Nur über diese Methode erhalten Anwender den Zugriff auf
// die Instanz.
inline static cpu& getInstance (void)
{
// Die Instanz wird erst beim ersten Aufruf erzeugt.
// Endet das Programm, wird Instanz vernichtet.
static cpu instance;
return (instance);
}
// struktur initialisieren
void detect (void);
// Abfrage ob eine SIMD-Technik unterstützt wird
inline const bool isMMXSupported (void) // MMX
{ return (cpu_info_._MMX && os_info_._MMX); }
inline const bool isMMXExSupported (void) // MMX (AMD specific extensions)
{ return (cpu_info_._MMXEx && os_info_._MMXEx); }
inline const bool isSSESupported (void) // SSE
{ return (cpu_info_._SSE && os_info_._SSE); }
inline const bool isSSE2Supported (void) // SSE2
{ return (cpu_info_._SSE2 && os_info_._SSE2); }
inline const bool is3DNowSupported (void) // 3DNow!
{ return (cpu_info_._3DNow && os_info_._3DNow); }
inline const bool is3DNowExSupported (void) // 3DNow! (AMD specific extensions)
{ return (cpu_info_._3DNowEx && os_info_._3DNowEx); }
// diverse getter:
inline const ::std::basic_string<char> getCPUVendor (void)
{ return (::std::basic_string<char>(cpu_info_._vendor)); }
inline const ::std::basic_string<char> getCPUName (void)
{ return (::std::basic_string<char>(cpu_info_._name)); }
inline const int getCPUIDNumber (void)
{ return (cpu_info_._IDnumber); }
private:
// Hilfsstruktur für die CPU
struct cpu_info
{
int _IDnumber; // Identifikationscode
bool _SSE; // Streaming SIMD Extensions
bool _SSE2; // Streaming SIMD Extensions II
bool _3DNow; // 3DNow! (vendor independant)
bool _3DNowEx; // 3DNow! (AMD specific extensions)
bool _MMX; // MMX Support
bool _MMXEx; // MMX (AMD specific extensions)
bool _ext; // extended features available
char _vendor[13]; // vendor name
char _name[48]; // cpu name
};
// Hilfsstruktur für das Betriebssystem
struct os_info
{
bool _SSE; // Streaming SIMD Extensions
bool _SSE2; // Streaming SIMD Extensions II
bool _3DNow; // 3DNow! (vendor independant)
bool _3DNowEx; // 3DNow! (AMD specific extensions)
bool _MMX; // MMX Support
bool _MMXEx; // MMX (AMD specific extensions)
bool _ext; // extended features available
};
// Private daten über OS und CPU
cpu_info cpu_info_;
os_info os_info_;
// Für den CPU-Namen die defintionen
void getCPUName (char* name, int n, const char* vendor);
// Abfrage ob das Betriebssystem eine SIMD-Technik unterstützt
bool isOSSupportingSSE (void); // SSE (I)
bool isOSSupportingSSE2 (void); // SSE (II)
bool isOSSupporting3DNow (void); // 3DNow!
bool isOSSupporting3DNowEx (void); // 3DNow! (AMD specific extensions)
};
#endif |
Dabei habe ich nur einfach "drauf los" gecodet mit sehr geringer Planung. Wenn das Grundkonzept steht versuche ich es so lange zu verbessern bis es für mich "Zukunftstauglich" ist, das bedeutet im Klartext: Das ich sie die nächsten Jahre auch weiterhin benutzen kann.
Dann kommen noch weitere dazu wie z.B. einen ini-Fileloader oder Klassen zum Laden verschiedener Grafikformate. Bis sich soviel zusammen getragen hat das ich es später für etwas größeres zusammensetzen kann
Beruflich ist das alles nur gähnende Planung.
- Patrick _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 06.04.2005, 19:08 Titel: |
|
|
hast du das 2.Buch? Dann guck mal auf S.381/382 da stehts; so mach ichs auf jeden Fall... |
|
Nach oben |
|
|
JkerryZ JLI Master Trainee
Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 06.04.2005, 20:17 Titel: |
|
|
Ich mache das immer so:
Abends wältze ich mich Stundenlang im Bett herum und überlege, was ich morgen denn mal wieder schönes Prgrammieren kann. Ist mir was eingefallen, überlege ich wie ich das umsetzen kann.
Kann ich es mit meinen Kentnissen programmieren, programmiere ich es nächsten Tag.
Kann ich es nicht, schreibe ich mir für irgendwann mal auf.
Sollte dies der Fall sein, überlege ich mir noch was anderes.
Zur Zeit sind mir allerdings die Ideen ausgegangen
Und während ich dann am programmieren bin, fällt mir immer ein, was ich noch ganz gerne einbauen würde...
Dann probier ich das aus, wenn es klappt ist gut, wenn nicht probier ich es nen Tag später nocheinmal in Ruhe... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 06.04.2005, 20:20 Titel: |
|
|
Ich zünde ein paar Pflänzchen und Fliegenpilze an und warte bis mein Zimmer voll Rauch ist... dann meditiere ich zwei Stunden vor meinem Schrein und warte auf eine Bewusstseinserweiterung. Danach steige ich empor zu den Göttern und hole mir einen heiligen Auftrag, den ich dann umsetze.
[Nachtrag]
Nein, natürlich nicht. ;)
Es kommt immer auf die Größe des Problems an. Für einen Taschenrechner werde ich kein Designdokument schreiben, es sei denn es soll so etwas wie MathCAD werden. Außerdem habe ich eine stylische Konferenzmappe mit Papier, Bleistift und Ratzefummel wo ich reinkritzle wenn mir spontan 'ne Idee kommt. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 06.04.2005, 20:51 Titel: |
|
|
Also wenn ich am Anfang eines Spiels stehe, mache ich mir erst mal ein Designdokument, in dem zuerst mal die Grundsachen und später immer mehr Details stehen.
Für grafische Objekte zeichne ich mir meistens ein paar Bleistiftzeichnungen, mit denen ich dann eine bessere Vorstellung davon bekomme. Selbstverständlich gibts für jede Kategorie eine ToDo-Liste, in der ich vermerke, was z.Z. in Arbeit ist und was noch zu tun ist(ich will ja nix vergessen ).
Wenns um konkrete Codeschnipsel, Funktionen oder Klassen geht, dann mache ich mir meistens schon vorher Gedanken, was die Funktion machen soll und (bei Klassen) welche Methoden es überhaupt geben soll. In der Schule gibts meistens genug Zeit nebenher, sodass ich mir da immer wieder Notizen mache oder sogar Codeschnipsel anfange oder fertigschreibe.
Bevor ich das alles mache, gehört natürlich jede Menge Vordenkarbeit und Inspiration dazu. D.h. ich mach mir erst mal ein relativ komplettes und klares Bild im Kopf von dem, was ich machen will, natürlich mit viel Schwärmerei *g* und mache mich dann an die Arbeit. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 06.04.2005, 21:01 Titel: |
|
|
jup, also mir kommt meistens so einfach ne Idee was ich aml machen sollte. Ich meine einerseits wil ich ncht so billigspielchen machen aber andererseits auch nix was ich net kann. Also warte ich einfach bis mir irgendwas passendes einfällt.
Und entweder überlege ihc mir vorher erst ganz genau wie das Spiel aussehen soll. Die Gedanken tippe ich manchmal aus Spaß in Word ein. Und dann wenn ich weiß wie das Spiel aussehen soll, überlege ich mir grob, wie ich es proggen muss. Manchmal hab ich dann neue Ideen, die ich mit wenig aufwand mit einbauen kann und manchmal lass ich was weg weils mir zu kompliziert würde.
Und dann mach ic erstmal wieder furchtbar viele Klassen also hab ich dann sehr viele sehr kleine Dateien, aber das sollte einfacher sein, als hinterher alles um zu struktureiren, weil das nie driekt klappt und sehr aufwendig ist.
Bilder oder Zeichnungen mahc ich selten, weil ich eh eigneltihc nur progge. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 07.04.2005, 06:38 Titel: |
|
|
Also ich hab hier so ein kleines DinA5 Ringbuch in das ich spontane idee rein kritzeln kann. Pseodo uml diagramme mache ich oft vor größeren projekten um meine gedanken zu ordnen.
Aber meistens schaut es so aus, dass ich zu allererst ein wenig experimentiere (z.B. momentan mit der OGRE engine) und mir dann gedanken dazu mache, wie man das spiel am besten umsetzen könne.
Das Design kommt also oft erst wärend der programmierung ist alles andere als optimal, daher schreibe ich auch öfters sachen neu, aber ich komme so gut klar.
Eine ausnahme bildet unser Thor Framework. das habe ich vorher komplett durchgedacht und nach einem halben jahr bin ich immer noch beim selben konzept mit nur kleinen änderungen. Aber ein Framework zu programmieren ist ja was anderes als ein spiel zu programmieren. alleine schon, weil das Framework so gut dokumentiert und aufgebaut sein muss, dass andere Leute das auch ohne probleme benutzen können. |
|
Nach oben |
|
|
C++Builder Senior JLI'ler
Anmeldedatum: 04.10.2003 Beiträge: 235
Medaillen: Keine
|
Verfasst am: 08.04.2005, 20:41 Titel: |
|
|
also wenn ich eine Idee habe denke ich erst auch eine ganze Weile wie ich es realisieren könnte und was ich noch einbauen kann.
Wenn es dann so viel wird, dass ich es mir nicht mehr alles Merken kann/will fange ich an die Headerdateien zu schreiben also die einzelnen Klassen und dokumentiere alles was ich mir so ausgedacht habe dazu und kommentiere jede Membervariable/-funktion.
Wenn ich mir irgendwas nicht gleich veranschaulichen kann, dann greif ich auch zum guten alten Blockpapier. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|