Aufbau eines Games

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

ozzi789

Betreff: Aufbau eines Games

BeitragFr, Feb 08, 2008 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Grundsätzlich grübel ich nach, wie ein Game grundsätzlich "aufgebaut"
ist. (3D)
Man hat ja da seine Engine , und die Level datein, doch wen man einen NPC hat wie wird dem gesagt was/wo er etwas tun soll ?
Ist das der "Leveldatei"?

Kann mir jemand den Aufbau ein bischen genauer beschreibn ?
Und wie steuert ihr/man eure Npc, mit waypoints ?

MFG
OZ
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 08, 2008 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja wohl von Game zu Game unterschiedlich. Beispiel:

1) Du programmierst ein Autorennen. Die Strecke ist in einer Leveldatei gespeichert als auch mögliche Startpositionen der Fahrzeuge. Wo die Fahrzeuge letztendlich plaziert werden, hängt aber von der Usereinstellung ab (er will 1 gegen 1 spielen, oder gegen 20 andere CPU-Spieler). Die Steuerung der Gegner muss dann halt eine KI machen.

2) Du programmierst ein Rollenspiel. Die Welt ist in einer Leveldatei gespeichert, aber auch bestimmte Scripte die zu jedem einzelnem NPC gehören (Name, Reichtum, Besitz, Verhalten, Ort, Art, Alter und auch Sprüche etc...). Die Steuerung der NPC muss dann eine KI unter Berücksichtigung der Scripte erledigen.

Wie du nun schon bei den beiden Beispielen erkennen kannst, wäre der Aufbau grundlegend anders.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ozzi789

BeitragFr, Feb 08, 2008 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Smile

Ich kam auf den Gedanken als ich gerade Hl2 ep1 zoggte und die Npc (alex)
sich sehr "menschlich" verhielt , also als zombies da waren hatte sie angst.
Usw

Wie "erkennt" der Pc jetz wie sich der Npc verhalten soll ?
Liest er aus wie viele Feinde da sind ?

Noch ne andere Frage von mir, gibt es beispiele von Programmen die in Blitz geschrieben wurden, die Soundmaps haben ?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 08, 2008 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei HL war sehr vieles gescriptet. Das heisst: Es lief eine art 'Videofilm' in Game ab, wenn man bestimmte Punkte auf der Map betreten hat. Wenn die Scripte und das Leveldesign gut abgestimmt sind, dann fällt es nicht sonderlich auf. Bei HL2 kann ich es nicht genau sagen. Habe es zwar zweimal durchgespielt, aber es ist ja auch kein Hobbyprojekt eines Programmierers, sondern ein 'High-End-Produkt'. Ich vermute aber, dass HL2 generell viele Scripte beinhaltet und eine sehr komplexe KI dahinter steht. Eine KI muss aber ggf. die Regeln der Scriptvorlage beachten. Das ganze ist letztendlich auch als Alleinprogrammierer 'nicht' zu schaffen. Also ich könnte es z.Zt. vielleicht grad mal zu ~ 10 - 20 %.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

peacemaker

BeitragFr, Feb 08, 2008 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei uns (Tehadon, http://tehadon.info) funktioniert das System etwa so:

Es gibt die Leveldateien. Dort werden alle statischen Objekte positioniert. Jetzt gibt es ja auch dynamische Objekte. Diese werden teilweise auch in den Leveldateien gespeichert, aber nur nachdem sie erstellt wurden. NPCs z.B. werden per Skript erstellt.

Was Alyx betrifft: das ist verschieden. Es gibt statisches Verhalten. Das ist eventbasiert, z.B. wenn gerade eine (vorgeplante und geskriptete) schlacht im Gange ist. Da sind die meisten Sachen genaustens vordefiniert, z.B. das nach einer Weile einer der NPCs etwas sagt, etc.

Dann gibts sachen, die jeder NPC einzeln hat. Z.B. das er bei vielen Gegner reagiert, wenn du im Kampf bist er dir hilft (falls er iner Nähe ist , etc). Momentan ist der Bereich KI (künstliche Intelligenz) nicht das, was der Name sagt. Absolut jeder Schritt ist genaustens vordefiniert. Meistens (mach ich so) arbeitet man mit States. Das sind einfach Zustände, z.B. bei nem NPC "wegrennen", "schlagen", "meckern", etc. Diese kommen in verschiedenen Situationen hervor.

Z.B:
Code: [AUSKLAPPEN]

if (GegnerStateVonNPC="schlagen")
 NPC_SetState ("wegrennen")
EndIf

Das ist arg simpel, aber so ungefähr funktionierts.

Bei mir sind die NPCs auch noch in sog. Modes unterteilt. Das ist einfach, um die States (es sind reichlich viele, desshalb) zu managen. Ein Modus wäre z.B. "kämpfen", einer "tagesablauf befolgen" einer "schifffahren", etc. Jeder dieser Modes ist in States unterteilt.

Normalerweise wird das durch ne FSM (Finit State Machine) gemanagt. (iss aber etwas komplizierter => google)

mfG[/img]
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

Silver_Knee

BeitragFr, Feb 08, 2008 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast dir die Frage selbst beantwortet...wie ich hl kenne sind die Maps in bereiche eingeteilt. wenn Zombies im bereich deines NPCs sind oder die tür zum Nachbarbereich geöffnet ist und da welche sind , dann dreht der script auf angst usw....

ozzi789

BeitragFr, Feb 08, 2008 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@Peacemaker1

Danke da hab ich wida wat gelernt Smile

Kurz gefasst die zu Stände des Npc bestehn auf Variablen wie
Anzahlfeinde , ob der Npc angegriffen wird usw

Da wirfst sich bei mia eine 2 Frage auf.
Bei Oblivion (the elder Scrolls) gehen die Npc in der Stadt rumlaufe, sitzen machmal ab, reden mit einander , gehen heim.

Ist diese verhalten zufallsprogrammiert oder gibt es ein paar vorgefertigte
Verhaltens"scripts" ?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 08, 2008 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi789, das ist dann wohl eine Mischung aus KI und Scripts.

Beispiel:

Was macht die KI, wenn sie auf eine andere KI trifft? Sie schaut in ihrer '''KI''' nach, was zu tun ist, in diesem Fall dann eben --> Siehe Randomize Script Bereich X bis Y und ausführen...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

peacemaker

BeitragSa, Feb 09, 2008 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ozzi, das erledigen wir folgendermassen.

Jeder NPC hat nen Tagesablauf.
Das ist ein SKript, in welchem definiert wird, was ein NPC von wann bis wann macht.

Bei uns siehts so aus:
Code: [AUSKLAPPEN]

Time "6.30",9.30"
{
 // der NPC sitzt einfach herum:
 NPC_Sit (Ob_Marhem_Bench_01);
};


Recht simpel, denke das benötigt keine weiteren Erklärungen. Ob_Marhem_Bench_01 ist die Objekt-ID einer Bank.
Es gibt aber auch einen anderen Faktor:
Zusammentreffen von NPCs. Hier kommt ein völlig neues System hinzu. Jeder NPC kann bis zu 16 Freunde haben. Trifft er einen, wird entschieden ob nGespräch sinnvoll wäre. Dann startet das Gespräch. Gesspräche sind sehr dynamisch, haben aber oft den gleichen Aufbau. Begrüssung->Anzahl Fragen herausfinden. Anzahl-Fragen*(Fragen->Antwort), Abschied.

In Oblivion funktionierts meines wissen so: Oblivion nutzt eine Technik namens RadiantAI. Die ist sehr stark dynamisch. Desshalb sind die NPCs nicht das gleiche wie z.B. in Gothic II. Denen ists viel interessanter zuzuschaun.

Bei solch hochdynamischen NPCs muss man sehr schauen, das es nich ausartet, z.B. das sie sich gegenseitig den Schädel flach hauen.

mfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

ozzi789

BeitragSa, Feb 09, 2008 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Schädel Einhauen kommt mia bekannt vor, als ich mal Oblivion gezoggt hab, sind die büger plötzlich total durchgebrannt xD

Edit :

Hab deine Page angeschaut und sieht echt interessant aus Smile

Wo/wann gibt es eine Testversion ?
Bin echt gespannt Very Happy
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

peacemaker

BeitragSa, Feb 09, 2008 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap, das sind solch extremitäten. In Gothic 3 gabs auch solch Situationen. Dort ist die Welt VIEL zu Dynamisch. Wird ein NPC z.B. an einem Ort gebraucht (wegen Story) wird er dorthin geschickt. Er läuft tatsächlich die ganze Route ab. Bleibt er irgendwo hängen, gibts echt nProblem, da die Welt-KI nicht genug weit entwickelt war. Dann gabs irgendwelche komischen Wirkungen, z.B. das man angegriffen wurde, obwohl das erst passieren sollte, wenn eine Rebellion im Gange war.
Oblivion ist da das gleiche. Ich bin der Meinung das solche Welten noch nicht im Rahmen das Machbaren liegen, das ist echt arg komplex. Lieber wie in Gothic 1/2 fast alles genaustens vorskripten.
Das ist bei uns auch so, wird aber noch durch so ein ParteienSystem erleichtert. Das kümmert sich um diese Events.

Was Testversion betrifft kann ich (leider) noch nix sagen. Am besten schauste einfach regelmässig bei http://tehadon.info oder http://tehadon1.te.ohost.de/Fo...ic.php?t=2 vorbei.

mfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group