Programmplanung

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Programmplanung

Beitrag von sobi »

Hallo alle zusammen,

mal ne ganz allgemeine Frage. Wie geht ihr vor, wenn ihr ein neues Programm schreibt. Was plant ihr, worüber macht ihr euch detailierte Gedanken, was kommt später hinzu, wenn ihr schon "am werkeln" seit?

Liebe Grüße, Simon
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Bei mir ist das immer so :
- Kann ich meine Idee mit PB schreiben?
- Für welchen Bereich soll es sein (PC, LAN, INTERNET)?
- Kann ich die benötigte Grafik erstellen oder erstellen lassen?

Nach diesen 3 Fragen fange ich dann meistens an die ersten Zeilen zu schreiben.

Sobalt die Grundzeilen stehen, mache ich mir detailierte Gedanken, und mache dann diese Dinge:
- Schreiben von mehreren PB-Cods um Effekte oder Aussehen zu testen
- Erstellung von Beta-Grafiken
- Erstellung von Beta-Sounds
- Ansätze programmieren von verschiedenen Sachen die vllt mal vorkommen sollen.

Hier entscheidet sich meistens, ob ich das Programm zum Ziel bringe oder ob es unvollendet bleibt.

Wenn das Programm dann zum ersten mal Funktionstüchtig ist setzte ich mich daran diese Sachen zu machen:
- Erstellung von End-Grafiken
- Erstellung von End-Sounds
- Programmcode säubern (klappt meistens nie ^^)
- Verbesserungen

Nun stelle ich das Programm zum ersten mal ausgewählten Leuten vor und lasse mir Tips geben. Danach kommen dann nur noch:
- Verbesserungsphasen
- Erweiterungen
- Hilfe schreiben
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Hallo,

ich habe mal gehört, dass bei den meisten Leuten wohl das "About"-Fenster zuerst fertig ist :wink:

Aber Spaß beiseite. Ich mache es so ähnlich. Wobei bei mir nie im Vordergrund steht, ob das wirklich fertig wird. Das ergibt sich dann sowieso mit der Zeit.
Also
- entscheiden, mit welcher Sprache man schreibt
- grobes Skizzieren in verschiedene Module (z.B. Eingabe, Ausgabe, Fehlerbehandlung, Dateihandling usw.)
- Herausstellung von Problembereichen und Lösung der Probleme anhand kleinerer Programme (z.B. Grafikausgabe o.ä.)
- geziehltes Schreiben der einzelnen Module
- Module einzeln testen (wenn's geht)
- zusammenführen der Module zur einer lauffähigen Testversion

Tja, und dann kommt die Phase des Testens und Verbesserns.

So versuche ich meistens vorzugehen. (Klappt aber oft nicht, wegen mangelnder Selbstdisziplin)

@ sobi : Wie machst du es denn?
Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Bei mir spielt auf jeden Fall auch Papier eine große Rolle. Bei objektorientierten Sprachen kann man sich auf jeden Fall mal grob eine Übersicht über alle Klassen zurechtmalen. Aber auch bei PB programmiere ich mittlerweile einigermaßen objektorientiert (soweit das halt möglich ist), daher läßt sich das im Prinzip genauso handhaben.

Hin und wieder bin ich auch zu faul, Papier zu benutzen, daher mach ich mir dann Skizzen in Paint :mrgreen: aber letztendlich ist es ja auch egal, Hauptsache, man macht sich überhaupt Gedanken um den Aufbau seines Codes.

Da ich hauptsächlich Spiele programmiere, muß ich mir im Vorfeld natürlich auch Gedanken um den Inhalt und um das Gameplay des Spiels machen. Das läuft ganz unterschiedlich ab, aber meist fange ich erst zu programmieren an, wenn ich eine klare Richtung vor mir habe. Dann wird ein kleiner Prototyp erstellt, der meist aber dann direkt zum Endprodukt ausgebaut wird.

Ganz am Anfang meiner Programmier-Karriere (auf dem C64 war das noch), da hab ich auch zuerst die Intros und Menüs usw. programmiert ;) aber davon ist natürlich abzuraten. Die Reihenfolge der Elemente, die der User später so zu sehen kriegen wird, sollte nicht der Reihenfolge der Programmierung entsprechen. Sondern man beginnt mit dem Kern und baut dann nach und nach den ganzen Schnickschnack drumherum.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

ich progge immer zuerst die GameEngine/das eigentliche Spiel, wenn es halbwegs läuft kommen Gfx + Verbesserungen hinzu, und gaaaaanz am Schluss dann Sfx + Hauptmenü <)
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Papier lege ich mir nicht mehr an. Pflegt man sowie so nicht.

Bei grösseren Projekten lege ich erst mal mehre Dateien an.
-Global.pb
-Struktruen.pb
-Funktionen.pb
-etc

Dann schreibe ich mit ausreichenden Kommentarzeilen die Basis.

Erstelle mir mit den Designer die Masken verteilt auf verschiedene Common Dateien.

Jage diese dann durch mein VisualGeneric um schon mal für alle Menus und Gadgets alle Events bereit zu stellen.
Binde die Funktionen mit den Events.

Somit habe ich die Basis mit Oberfläche vorbereitet.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

AndyX hat geschrieben:[...], und gaaaaanz am Schluss dann Sfx + Hauptmenü <)
*sich tot lach und auf den Boden schmeiß*

Das finde ich bei mir auch immer cool, nach dem das Spiel läuft, kommt bei mir dann immer die Frage "Da fehlt doch was" ... Die komplette Menüstruktur ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

yo..
zumindest über das konzept der menustruktur sollte man sich von anfang an im klaren sein.

also z.b. sitzt es nachher in der selben hauptschleife, wenn ja,
wie regel ich das mit den flags, pack ich mein ganzen game krempel in ne proc
oder hab ich tausend codezeilen innerhalb von nem select/case....

man sollte schon mal nebenbei dran denken, vielleicht auch schon das Flag und nen vorab-button "play" einbaun...

...aber auf keinen fall ans design setzen. :mrgreen:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Objektorientiert gesehen löse ich das immer so, daß ich ein Game-Objekt, ein Menü-Objekt, ein HighscoreScreen-Objekt usw habe, und immer nur eines kann aktiv sein. Meine "Haupt-Haupt-Schleife" macht dann nix anderes als immer nur den aktiven "Screen" zu updaten, egal ob das nun das Game oder das Menü ist. Was genau passiert, regeln die dann intern, und wenn gewechselt wird, wird der vorige Screen einfach auf "Sendepause" geschalten und der neue aktiviert.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

So mache ich das auch
(wusste nur nicht, das das OO ist)
Aber da ich häufiger Programme als Spiele schreibe, ist das antürlich noch einmal anders.
Wobei ich auch da nur eine Eventloop habe, und je nachdem welche fenster aktiv sind werde andere Proceduren jeden Durchgang (oder zeit gesteuert) ausgeführt.

Zum "Vorbeireiten" meiner Projekte:

Zuerst überleg ich mir natürlich, was ich machen will (meistens Windows-Applikationen) und mit welchen Hilfsmitteln ich das bewerkstelligen will (externe DLL's (Z.B.: FMOD)).
Dann schreibe ich die Fenster Proceduren, und die Einstellungsprocedure (die die das schreiben und lesen der Datei, wo man seine individuellen Einstellungen später abspeichert, damit diese beim laden direkt bei der Fensterprocedure ausgeführt werden (zb Sprache)).
Dann kommt der Eventloop (immer Forever) udn die Procedure ende().
Der Eventloop besteht derzeit nur aus der "#Pb_event_closeWindow" abfrage.
Danach werden Proceduren geschreiben, die die einzelnen events wie gadget-klicks und menüeinträge übernehmen. Das Fenster wird dementsprechend erweitert.
Mein Mainloop besteht nur auf einer großen Select, die Cases immernur aus einem Proceduren aufruf.
Zb Procedure ButtonPlay() übernimmt das überprüfen auf "pause/play/stop/liste leer und ruft dann die Hauptfunktionen "PlaySound()"/"PauseSound()"/"ResumeSound()"/"LoadSound()" auf (kleines Beispiel).

so wird alles immer erweiter (zeitgestuerte Callbacks, mehr Proceduren, Sicherheitsproceduren (zeitmesser wg nicht reagieren etc (aber erst ganz am ende))evt DLL...)

Diese Art des Programmierens benutze ich seit Ca einem Halben Jahr udn ich komme gut zurecht (bei neinem Vorherigen Projekten kam ich sonst meistens in unerreichbar hohe CPU Auslastungen , unnötigen HDD zugriffen, endlosschleifen etc.
Unmöglicher Codestil eben :freak: :lol:
Antworten