2008-10-07 16 views
11

Ich bin in meiner Freizeit mit der Entwicklung von 2D-Spielen mit C++ und DirectX beschäftigt. Ich finde, dass die Enterprise-Problem Domain Modeling-Ansatz nicht so viel hilft, wie ich möchte;)Was sind einige gute Ressourcen für 2D-Game-Engine-Design?

Ich bin mehr oder weniger auf der Suche nach einem "Best Practices" entspricht grundlegenden Spiel-Engine-Design. Wie Entitäten miteinander interagieren sollten, wie Animationen und Sounds in einer idealen Welt dargestellt werden sollten, und so weiter.

Wer hat gute Ressourcen, die sie empfehlen können?

Antwort

15

Gamedev.net In der Regel wende ich mich an, um eine Vorstellung davon zu bekommen, was andere Leute in der Spielentwicklungs-Community tun.

Das heißt, ich fürchte, Sie werden feststellen, dass die Idee der "Best Practices" in der Spieleentwicklung volatiler als die meisten ist. Spiele neigen dazu, so spezialisierte Anwendungen zu sein, dass es nahezu unmöglich ist, "one size fits all" Antworten zu geben. Was gut für Tetris funktioniert, wird mit Asteroids nutzlos sein, und ein Modell, das perfekt für Halo funktioniert, wird wahrscheinlich für Mario kläglich versagen.

Sie werden auch schnell feststellen, dass es keinen "Industriestandard" für Textur-, Mesh-, Level-, Sound- oder Animationsformate gibt. Jeder rollt nur seine eigenen oder nutzt alles, was zur Plattform passt. Sie sehen gelegentlich Dinge wie COLLADA, was nett ist, aber es ist immer noch nur ein Zwischenformat, das entwickelt wurde, um das Schreiben von Exporteuren zu vereinfachen.

Wenn Sie neu in der Spieleentwicklung sind, wäre mein Ratschlag: Töten Sie sich nicht über Ihre Code-Struktur auf Anhieb. Versuchen Sie ein einfaches Spiel, wie Asteroiden, und hacken Sie einfach weg, bis es funktioniert, egal wie "hässlich" der Code ist. Verwenden Sie einfache Formate, mit denen Sie vertraut sind, ohne sich Gedanken darum zu machen, wie gut sie sich in größeren Projekten behaupten können. Mach dir keine Sorgen über Plugins, Skins, Editoren oder irgendeinen anderen Fluff. Mach es einfach WORK! Dann, wenn Sie damit fertig sind, alle wichtigen Spiele, wählen Sie eine andere, und dieses Mal räumen Sie ein oder zwei Aspekte Ihres Codes auf (aber gehen Sie nicht über Bord!) Von dort aus iterieren Sie!

Ich verspreche Ihnen, dass dies Sie weiter schneller als jede Menge stochern online für den "richtigen Weg" jemals könnte (das kommt von jemandem, der eine Menge Stoßen getan hat).

Und ein letzter Gedanke für Sie: Wenn Sie sich wohler fühlen in einem besser definierten Raum arbeiten, sehen Sie sich XNA oder eine ähnliche Bibliothek. Sie werden einige der "besten" Formate vordefinieren und Ihnen Werkzeuge zur Verfügung stellen, mit denen Sie arbeiten können, was einige der anfänglichen Rätselraten überflüssig macht.

Viel Glück, und vor allem erinnere dich daran: Spiele (und ihre Entwicklung) sollen Spaß sein! Lass dich nicht zu sehr von den kleinen Dingen mitreißen!

6

Machen Sie ein Spiel. Wenn du fertig bist, mach einen anderen. Schau dir an, was dir gefallen hat und was du nicht magst und dann noch eins.

Im Ernst, Sie können alle "Best Practices" -Leitfäden zum Spieldesign lesen, das Sie möchten, aber letztlich kommt es auf Erfahrung an. Der einzige Weg, Erfahrung zu sammeln, ist, sich hinzusetzen und ein Spiel zu schreiben. Nachdem Sie dies ein paar Mal getan haben, erhalten Sie eine bessere Idee von viel, wie man ein Spiel schreibt.

+3

Genau wie ein Haus zu bauen. Mach den ersten für deinen schlimmsten Feind, den nächsten für einen Freund und den dritten für dich. :-) – KPexEA

3

So ziemlich jedes Buch, das Andre Lamothe als einer der Mitwirkenden hat.

GameDev hat Tonnen von Artikeln sowie.

0

Da es noch nicht erwähnt wurde, warum sollte man nicht zuerst einen vorhandenen Motor anschauen, der für die Community freigegeben wurde? Da du 2D sprichst, würde ich weit zurück gehen und etwas wie Abuse empfehlen. Ja, es ist alt und die meisten interessanten Teile sind in Lisp - aber das Spiel wurde eine Zeit lang sehr populär, was bedeutet, dass sie etwas richtig gemacht haben.

Wie es passiert, ich denke, die Tatsache, dass so viel von dem ursprünglichen Spiel in Lisp war, ist eine sehr nützliche Lektion. Wählen Sie die robusteste Sprache/das robusteste Werkzeug und sorgen Sie sich nicht um die Leistung. Sie können die langsamen Teile in C später immer optimieren.

1

Ich kann Ihnen nicht mehr zustimmen: Enterprise-Anwendungen bereiten Sie nicht auf die Programmierung von Spielen vor.

Ich habe ein paar kleine Spiele in Python, Java, HTML/PHP und Perl erstellt. Die Grundstruktur eines Spiels, wie Sie wahrscheinlich wissen, ist:

Hauptschleife:
    handleInput()
    updateGameLogic()
    renderImages()

Nun, das ist Alles gut und gut für Single-Screen, Single-Thread-Spiele, wie alles aus den 70er oder 80er Jahren. Aber ich finde diese Struktur nicht besonders gut für Multi-Screen-Spiele (wie RPGs) oder etwas exotischer. Es führt nicht sehr gut. Der Code wird ziemlich funky, da Sie eine Vielzahl von Eingaben verarbeiten müssen. Es skaliert nicht gut.

Bevor ich jedoch diese Metapher zu sehr erschlagen, bitte beachten Sie, dass dies ein ausgezeichneter Ausgangspunkt ist. Ich würde so weit gehen, zu empfehlen, Python/Pygame zu lernen und damit anzufangen, Spiele mit diesem Werkzeug anstatt C++ zu bauen, was den Entwurfs- und Implementierungsprozess erschwert. Wenn Sie in Python prototypieren, werden Sie sehen, dass das Spiel viel schneller Gestalt annimmt und sprachunabhängige Probleme verursacht.

Die schwierigsten und zeitaufwendigsten Aspekte der Spieleprogrammierung sind für mich Grafik und Sound. Während ich ein bisschen ein Audio-Nerd und Amateur-Musiker bin, ist das Erstellen von glaubwürdiger und passender Musik und SFX ein Projekt für sich allein. Ich habe kein grafisches Talent, deshalb muss ich mich darauf verlassen, existierende Bilder zu modifizieren oder frei verfügbare Bilder zu verwenden. Zum Glück gibt es eine weit verbreitete kostenlose Fonts, die für Spiele verwendet werden können (und wenig sonst, da sie fast überall schlecht sind).

Schließlich gibt es nichts wie Open Source, um zu sehen, wie andere Projekte damit umgehen. Battle of Westnoth ist ein reifes, mittelgroßes Spiel. Vielleicht möchten Sie sehen, was dort vor sich geht. Auch hier stellen Spiele in Python häufig ihren Quellcode zur Verfügung, sodass Sie dort Hunderte von Projekten durchsehen können. Sie könnten auch Atari 2600 ROMs dekompilieren, aber das wird Ihnen nicht viel über Programmierung heute erzählen. Das alte VCS war ein dediziertes Gerät, das seine Apps sehr systemabhängig verarbeitete. :-D

Schließlich mag ich auch Andre LaMothe. Ich habe sein altes Buch von 1993, das eine Million Seiten dick ist. Obwohl es immer noch eine nette Referenz zu einigen generischen Spielideen ist, wird viel davon durch die Verfügbarkeit frei verfügbarer Bibliotheken und Frameworks, die damals nicht existierten, überflüssig.

Viel Glück mit Ihrem Projekt.

Verwandte Themen