Engine für 2D Roguelike?
-
Hio
Ich bin grad dabei mir ein Roguelike konzept in anlehnung an the binding of isaac auszudenken (original: http://store.steampowered.com/app/113200/), natürlich keinen klon o.ä., eher die grundlegende mechanik. Grafik soll auch nicht groß darüber hinausgehen, also 2d werden mit einfachen texturen, schatten und lichteffekten.
Dabei is mir jetzt die frage gekommen, welche engine/programmiersprache ich nutzen sollte. Wer das original kennt weiß, dass es in flash geschrieben ist, und enstprechend bescheiden läuft (aka selbst auf highend rechnern mit i5 /i7 prozessoren frames dropt), grade die problematik will ich umgehen.
An programmiersprachen kann ich ansich nur c++ und als Framework Qt, bin aber durchaus bereit da meine kentnisse zu erweitern (richtung java z.B:)
Gedacht hatte ich in die richtung:
- Java (wie siehts da mit der 2d performance aus? Ich kenn die 3d performance aus minecraft die is ja eher mäßig)
- Qt mit OpenGL (sich in opengl einzuarbeiten für n simples 2d spiel dürfte overkill sein, denke ich?)
- aus jugendzeiten (bestimmt voll einfach spiele zu programmieren !11!!) kann ich mich noch an die SDL erinnern (gibts die noch enstprechend, noch empfehlenswert?)was würdet ihr nehmen? oder ganz andere vorschläge?
Wär mir natürlich lieb, wenn ich bei C++ bleiben könnte, wobei Java sicherlich nicht schlecht ist zu lernen/können.ps: ja, ich bin mir voll bewusst, wieviel aufwand sowas ist Ich bin IT student un such n nebenbei projekt, und da macht mir sowas mehr spaß als irgend n programm zu schreiben. und als referenz für werksstudi jobs ist es sicher nicht verkehrt schon privat "größere" sachen programmiert zu haben)
-
LÖVE ( http://love2d.org/ ) ist ganz nett (nur leider weder für Java noch für C++). Es ist einfach zu benutzen und ist gut dokumentiert.
Falls du bei C++ bleiben willst, kannst du imo weiterhin SDL benutzen (SFML wäre empfehlenswerter, aber für dein Vorhaben reicht SDL völlig aus)
-
Danke schonmal dafür
ersteres baut ja scheinbar auf lua, das is doch afair ne skiptsprache, da hat man dann doch sicherlich wieder performance probleme?
bei SDL "bleiben" is dann auch zuviel gesgat, hab glaub ich außer 2-3 tutorialübungen nichts damit gemacht^^ da kann ich mir dann auch direkt SFML angucken
-
Naja, man muss schon recht viel Mist bei der Implementierung bauen um mit Lua bei dem Projekt Performance Probleme zu bekommen .
Wenn Skriptsprachen so langsam wären, dass man mit ihnen kein ruckelfrei laufendes Roguelike schreiben könnte, wer würde sie dann schon nutzen? (hint: viele Entwickler benutzen sie)
-
Ich kenn skriptsprachen jetzt nur als ergänzung (bei wow sind ja z.B. die addons in lua geschrieben) und nicht als einzige entwicklungssprache^^
aber ich werd mal schaun
-
Lua ist einer der schnellsten Skriptsprachen (deswegen wird es auch für bekannteste Spiele verwendet) und Prozessoren heutzutage so schnell, dass es keinerlei Bedenken wegen der Performance eines einfachen 2D Spiels geben sollte. Man müsste schon ziemlich viel und schlecht programmieren, damit es zum Ruckeln kommt und selbst dann lässt sich noch Multithreading zur Beschleunigung nutzen.
Love2D ist die so ziemlich bekannteste Game Engine für Lua und macht den Einstieg in die Spieleprogrammierung einfach und spaßig.
-
wenn du bei einem 2D Roguelike performance probleme bekommst, dann kannst du dir sehr sicher sein, dass das problem nicht die sprache ist, sondern vor der tastur sitzt
fuer sowas kleines duerfte jede sprache recht sein, ob lua oder c++. die drei wichtigsten dinge an denen so ein vorhaben scheitert ist:
1. erst garnicht anfangen
2. nicht weitermachen
3. nicht zuende bringen.entsprechend, fang an, hop hop
(und poste natuerlich hier im schoenen screenshot thread wie du vorran kommst, oder im projekte forum, damit es leute ausprobieren koennen und dir feedback geben.)
-
SFML 2 ist sicher keine schlechte Idee. Dabei hält sich der Aufwand in Grenzen, und du kannst dich voll auf die Spiellogik konzentrieren.
Neben 2D-Grafik behandelt SFML auch Audio und Benutzereingaben. Du könntest damit sogar eine simple Netzwerkanbindung implementieren...
-
rapso schrieb:
wenn du bei einem 2D Roguelike performance probleme bekommst, dann kannst du dir sehr sicher sein, dass das problem nicht die sprache ist, sondern vor der tastur sitzt
fuer sowas kleines duerfte jede sprache recht sein, ob lua oder c++. die drei wichtigsten dinge an denen so ein vorhaben scheitert ist:
1. erst garnicht anfangen
2. nicht weitermachen
3. nicht zuende bringen.entsprechend, fang an, hop hop
(und poste natuerlich hier im schoenen screenshot thread wie du vorran kommst, oder im projekte forum, damit es leute ausprobieren koennen und dir feedback geben.)
erstmal das konzept wirkltich fertig stellen und zu papier bringen, das meiste schwirrt bei mir im kopf rum^^ der grobe rahmen steht schon, muss aber noch verfeinert werden^^
bevor ich anfange und dann ständig teile neu schreiben muss^^ ( und ich muss mich einarbeiten in (ich werds wohl nehmen) sfml)
-
Das schwerste dürfte am Ende eine vernünftige Labyrinth Generation sein^^.
-
da häng ich btw auch noch dran xD hab schon n groben plan(und die rahmenfunktionen dazu soweit fertig), aber im endeffekt isses die feinabstimmung^^ wobei ich alles so aufbauen will, dass es einzelne räume sind die über türen (teleports) anneinander hängen (wie in isaac). Ich mags einfach, wenn die "action" immer auf einen raum konzentriert ist. (+ ist es deutliche infacher als noch automatisch die verbindungswege zu bauen).
hab allerdings ein wochenende ohne internet vor mir und das projekt aufm laptop + meinen händisch gefassten ablauf der generation schon eingepackt^^
da werd ich hoffentlich mal n paar stunden investieren können. unter der woche nach 4-8h zahlenspielen in der uni hat man (ich) wenig lust sich zu hause über sowas den kopf zu zerbrechen^^
aktueller plan ist es wohl ein integer array zu nehmen (maximale größe 15 * 11, die ebenen sollen ja nicht ewig dauern. Man soll das ganze spiel in 1-1,5h durch haben können je durchlauf) den mittelraum festzulegen und dann halt um diesen rum zu generieren. die belegten räume kriegen dann nummern für das spätere raumlayout und wenn die normalen räume soweit generiert sind pack ich an zufällige räume noch die spezialräume ran).