F:
Sie haben als Spieleentwickler gearbeitet, bevor Sie zu Conitec stießen;
geben Sie bitte einige Details.
A:
Vor Conitec arbeitete ich als Programmierer für "Nintendo Software
Technology Corporation" (NST), welches Nintendos internes Entwicklerteam
ist. NST hält ziemlich unter Verschluß, was genau sie tun und
ich habe klare Anweisung, über keines der Projekte zu reden, an denen
ich zu der Zeit beteiligt war, aber mein Name taucht in den Credits für
RidgeRacer64 auf (http://www.nintendo.com/games/gamepage/description.jsp?gameId=222#about
), also können Sie Ihre eigenen Schlüsse ziehen. ;)
Vor Nintendo studierte ich "Echtzeit interaktive Simulation" bei Digipen ( www.digipen.edu ) und habe einige kleine Spielprojekte für Windows und Macintosh Plattformen realisiert.
F:
Sie sind gerade von der Game Developer Conference wiedergekommen - haben
Sie interessante Neuigkeiten für die Acknex Community?
A:
Einige 3DGS Anwender sahen mich auf der Conference, wie ich aus der Xbox
Entwickler Lesung kam, aber ich stehe unter Schweigepflicht also kann ich
im Moment über nichts Konkretes reden. ;) Ich stehe immer noch zu
den Dingen, die ich früher sagte, 3D GameStudio könne auf der
Xbox laufen, aber wir brauchen die Unterstützung eines lizensierten
Xbox Entwicklers.
Die neuen Grafikkarten von ATI und nVidia sehen phantastisch aus. Microsoft arbeitet an einigen neuen Technologien für DirectX, die kombiniert mit aktuellen und zukünftigen Grafikkarten, Ihrem Spiel ein cineatisches Feeling verleihen. Viele Gruppen führen die Kunst und Wissenschaft der KI fort, also ist die Zukunft sowohl "schlau" als auch "gut aussehend".
F:
Wo und wie erlernten Sie C-Skript (alias WDL)?
A:
Ich habe C-Skript (damals WDL) von der Dokumentation gelernt, dem Handbuch.
Weil ich bereits mit Programmiersprachen Erfahrung hatte, auf denen C-Skript
basiert (C, C++ und Java), konnte ich die Grundlagen sehr schnell lernen.
Erfahrung mit anderen Sprachen hilft, aber die beste Art C-Skript zu erlernen ist es zu benutzen. Beginnen Sie mit den Grundlagen (Workshops und Tutorials) und experimentieren Sie dann selbst. Sie wissen nicht genau, wie eine Anweisung funktioniert? Schreiben Sie ein kleines Projekt und probieren es aus. Fragen Sie sich, ob Sie einen guten Effekt reproduzieren können, den Sie in einem anderen Spiel oder einem Film sahen? Probieren Sie es.
Wir versuchen, die Dinge leicht zu halten, aber C-Skript ist dennoch eine Programmiersprache, die man kaum über Nacht erlernen kann. Arbeiten Sie daran. Schlagen Sie Anweisungen im Handbuch nach. Schauen Sie in die Foren, um zu sehen wie andere Leute die Probleme gelöst haben. Für jedes gelöste Problem werden Sie besser im Programmieren werden.
F:
Werden Sie die Templates neu schreiben? Was planen Sie für die Zukunft?
A:
Ich bin im Moment dabei, sie neu zu schreiben. Wir planen, das einzufügen,
was von den Usern erfragt wurde. Code für Egoshooter wird da sein,
aber Rennspiele, Rollenspiele, Weltraumflugsimulatoren und andere Genres
werden ebenfalls hinzugefügt werden.
Die Idee ist es, die Templates modularer zu gestalten, so dass wir neue Elemente hinzufügen können und die User verschieden Elemente nach Belieben kombinieren lassen können, um die gewünschten Ergebnisse zu erzielen. Das Hauptziel ist es, neue User die Elemente auswählen zu lassen, die sie wollen, einige Werte zu ändern und das Spiel zu produzieren, ohne den Code anzurühren. Dennoch werden die Templates so gestaltet, dass erfahrene Programmierer die Teile, die ihnen gefallen nehmen können und neue Skripts schreiben können, die sich nahtlos in den bestehenden Code einfügen lassen.
F:
Wird die KI auch verbessert? Was können wir von den neuen Feinden
erwarten?
A:
Die neue und verbesserte KI ist auf jeden Fall ein Teil der neuen Template
Skripte. In der Vergangenheit war die KI sehr einfach gehalten, weil es
sehr schwierig ist, eine "schlaue KI" zu schreiben, die in jeder Situation
funktioniert. Das Ergebnis: "dumme" KI, die in den meisten Situationen
funktioniert.
Die modulare Struktur der neuen Template Skripte macht es leichter, eine Vielzahl von Kis hinzuzufügen. User können die KI wählen, die am besten auf die Situation paßt. Brauchen Sie eine KI, die ein Objekt bewacht? Eine, die eine Zone patroulliert und nach dem Spieler sucht? Eine, die ein Auto fahren kann? Wählen Sie die passende KI und setzen Sie sie in Ihr Level.
F:
Reden wir ein wenig über das neue System für modifizierbare Skripte.
Wie funktioniert es und für welche Spiele wird es Templates geben?
A:
Diese Skripts gehören zum "Non-programming Game Creation" System,
welches wir erstellen wollen. Es basiert auf dem neuen, modularen Template
System, das es dem User erlaubt, Skripte hinzuzufügen und zu entfernen,
je nach Art des angestrebten Spiels. Dann können Werte eingestellt
werden und Ressourcen ausgewählt, die von den Skripten benutzt werden.
Auf diese Weise kann das Spiel völlig eingestellt werden, ohne eine
einzige Zeile Code schreiben zu müssen.
Das ist schwer zu erklären, daher ein Beispiel. Sagen wir, Sie möchten ein Spiel schreiben, in dem es einen Level mit animiertem Himmel gibt. Im WED würden Sie "Add Script" selektieren und eines der Himmel Skripte anwählen, das für die Situation passend ist. Jedes Skript hat Anfangswerte, aber Sie können die meisten ändern, indem Sie "Customize" anwählen. Dann können Sie Himmel für Tag und Nacht auswählen, den Horizont und die Wolken einstellen. Sie können die Animation und Größe jedes Elements Ihres Himmels wählen. Speichern und starten Sie Ihr Level. Es ist so einfach.
F:
Wie sollten wir Code schreiben, um die maximale Geschwindigkeit zu gewinnen?
Gibt es Funktionen, Features etc., die vermieden oder mit Vorsicht gebraucht
werden sollten?
A:
Die neue Dokumentation führt die Geschwindigkeit von Anweisungen auf.
Natürlich sollten Sie versuchen nach Möglichkeit langsame Anweisungen
zu vermeiden, aber es wäre ein Fehler, sich zu sehr auf die individuellen
Geschwindigkeiten zu konzentrieren und das Gesamt-Design zu vernachlässigen.
-
Führen Sie nichts aus, was der Spieler nicht sieht. Wenn Sie 100 Entities
in Ihrem Level haben, der Spieler aber nur 3 sieht, sollten die anderen
97 nicht viel Rechenleistung beanspruchen. Mit Hilfe von Schaltern in Ihrem
Level, um Entities zu aktivieren oder selbst mit "langsamen" Anweisungen
wie trace, um festzustellen, ob der Spieler eine Entity sieht, kann man
eine Menge Geschwindigkeit herausholen.
-
Nur weil etwas funktioniert, muß es nicht richtig sein. In einem
meiner Projekte hatte ich einen Effekt mit 50 Partikeln. Es sah gut aus,
also fuhr ich fort. Später fand ich heraus, dass von diesen 50 Partikeln
nur 10 verschiedene Positionen hatten, die anderen 40 wurden über
diese 10 gemalt! Ich habe die Zahl der Partikel auf 10 reduziert und alles
sah genauso aus wie vorher, lief nur fünf Mal schneller!
-
Haben Sie keine Angst von vorn zu beginnen. Es ist wahrscheinlich, dass
die erste Lösung für ein Problem nicht die optimale ist. Hängen
Sie nicht an Ihrem Code; wenn Sie eine bessere Lösung finden, benutzen
Sie sie.
-
Verbringen Sie nicht zuviel Zeit damit, Ihren Code zu optimieren, falls
Sie nicht sicher sind, dass Sie es müssen. Verwenden Sie das Debug
Panel um zu sehen, wieviel Zeit von Ihrem Code benutzt wird und vergleichen
Sie es mit der Zeit, die mit dem Rendern des Levels verbracht wird. Meistens
muß die Grafik, nicht der Code, optimiert werden. (Lesen Sie auch
Marcos Interview letzten Monat für Ideen, wie man Level designen kann,
die schneller laufen)
F:
Geben Sie uns einige Tips für Anfänger!
A:
Hier sind 3 Tips, die vielen Anfängern (und einigen Fortgeschrittenen)
sehr helfen könnten.
-
Beginnen Sie klein. Zu viele User versuchen, Ihr Traumspiel von Anfang
an zu programmieren. Das ist ein guter Weg, um frustriert zu werden. Wenn
Sie noch nie programmiert haben und eine tolle Idee haben, schreiben Sie
die Idee auf und denken Sie über ein einfacheres Design nach, für
den Anfang.
-
Verbringen Sie mehr Zeit mit dem Design. Eine Idee direkt aus Ihrem Kopf
zu programmieren ist schwerer, als Sie vielleicht glauben. Nehmen Sie sich
ein Blatt Papier oder eine Textverarbeitung und schreiben Sie Ihre Ideen
auf. Selbst bei einem kleinen Projekt werden Sie einige Sachen vielleicht
mehrmals ändern, bevor sie richtig funktionieren; es ist leichter,
auf dem Papier Änderungen vorzunehmen, als im 3D GameStudio. Wenn
Ihre Ideen nicht auf einige Blatt Papier passen, sollten Sie Tip 1 nochmals
lesen. ;)
-
Beenden Sie es! Das ist vielleicht das Schwierigste. Viele Spiele werden
zu 60%, 70% oder 80% beendet, aber diese letzten 20% sind es, die es zu
einem Spiel machen. Sie können auch von halbfertigen Projekten eine
Menge lernen, aber die Freude und Erfahrung, die von einem fertigen Spiel
kommt, kann nicht gemessen werden. Ich könnte noch mehr Tips geben
(speichern Sie *vor* großen Änderungen, benutzen Sie Breakpoints
und Panels zum Debuggen, etc.), aber Anfänger sollten sich auf diese
drei konzentrieren.
Vielen
Dank, Doug.