GORC – Neuanfang? C, C++, FreeBASIC oder D?

Februar 3rd, 2009

Hier auf meinem alten Laptop läuft GORC viel viel zu langsam. Das liegt zum größten Teil daran das Löve auf OpenGL setzt. SDL für eine 2D Spieleengine hätte vollkommen ausgereicht. Naja. Aber was nun?

Eigentlich ein ziemlich guter Zeitpunkt um GORC in einer “richtigen” Programmiersprache neu zu schreiben und gleich die SDL Bibliothek zu nutzen. Schließlich brauche ich hier nicht mehr als SDL, SDL_Mixer und SDL_Image. Später fürs Skripting noch Lua, aber bis dahin ist noch Zeit…

In die engere Wahl kommen dabei 4 Sprachen: C, C++, FreeBASIC und Digital Mars D. Letzteres wollte ich schon immer mal ein wenig genauer beschnuppern. Die Bibliotheken meiner Wahl unterstützen alle.

Zu C und C++ mag ich gar nicht allzu viel schreiben. Kann so ziemlich für alles kompiliert werden und ich liebe einfach deren Syntax :)

FreeBASIC ist quasi ein C mit QuickBasic Syntax. Kann aber leider nur für Windows und Linux kompilieren.

D soll wohl “besser” sein als C++. Inwiefern sich das auf ein einfaches Projekt wie GORC auswirkt, keine Ahnung. Das Kompilieren gestaltet sich dank DSSS viel einfacher als bei C/C++. Denn ich habe es noch nie wirklich hinbekommen, das meine Programmchen sich per ./configure && make kompilieren ließen. Ist mir einfach zu aufwendig das ganze *lach*

Hier auch mal ein kleiner Blick in Richtung D:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import derelict.sdl.sdl;
import tango.io.Console;
 
void main()
{
    try {
        DerelictSDL.load();
    } catch (Exception e) {
        Cout("Could not load the SDL shared library.\n");
	return;
    }
 
    SDL_Init(SDL_INIT_VIDEO);
 
    SDL_SetVideoMode(640, 348, 24, SDL_SWSURFACE);
    SDL_WM_SetCaption("GORC", null);
 
    mainLoop:
    while (true) {
        SDL_Event event;
 
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
                case SDL_QUIT:
                    break mainLoop;
 
                default:
                    break;
            }
        }
        SDL_Delay(10);
    }
 
    Cout("Oki Dokili.\n");
    SDL_Quit();
    DerelictSDL.unload();
}

Also? Was nehm ich denn nun?

Ähnliche Beiträge:

Entry Filed under: Programmieren, Projekte

4 Comments

  • 1. herc  |  Februar 4th, 2009 at 14:12

    ich bin gerade durch golem.de auf die angel 2d engine aufmerksam geworden:

    http://code.google.com/p/angel-engine/

    allerdings benutzt sie openGL.

    hast du ansonsten schonmal in richtung python geschaut?

    pygame ist wirklich total einfach zu benutzen und ist wesentlich einfacher zu programmieren. ich habe pygame gerade meinen bachelor erstsemestern in meinem seminar beigebracht. da kann man in 30 zeilen ein komplettes spiel programmieren !!
    du kannst ja mal einen blick drauf werfen:

    http://www.coreloop.com/dump/arbeitszettel_12.pdf
    http://www.coreloop.com/dump/arbeitszettel_13.pdf

    (bedenke: der code is für 1.semester in der sportwissenschaft, also ganz ganz einfach gehalten)

    ansonsten würde ich wohl eher c++ nehmen als D. D in ehren, aber C++ ist einfach verbreiteter, es gibt mächtige IDE’s (schon mal visual studio in kombination mit http://www.visualassist.com probiert? es gibt nichts besseres!!!)

    bin gespannt wie du dich entscheidest! gruss, a

  • 2. Matthi  |  Februar 4th, 2009 at 18:42

    OpenGl ist ja mein hauptsächliches Problem. Ohne Hardwarebeschleunigung muss die arme CPU bei mir halt auch noch den Grafikpart übernehmen und das ist Murks. Und wenn ich bedenke das die Windows Beta von Game of Robot spielbar dank Wine hier auf der alten Kiste läuft, während GORC einen auf Diashow macht *lach*

    SDL ohne OpenGl bringt hier schon richtig Speed. Und mehr brauchts da für GORC auch nicht (ich peile hier auf dem Notebook knappe 30 FPS an, das sollte genügen). SDL_Image noch für die Png Grafiken und SDL_Mixer für die Musik und Sounds. Vor allem gibts hier auch nicht wirklich viel zu beachten, um plattformneutral zu bleiben.

    Pygame kenne ich :) Sind ja quasi meine drei Libs + Python. Hier befürchte ich aber, was wohl auch bei Löve noch aktuell problematisch ist, das eine interpretierte Sprache unnötig verlangsamt. Das dürfte sich vor allem dann bemerkbar machen, wenn ich deinem Rat folge und die Spielelemente weiterhin in Klassen lasse und dann pro Szene einen Haufen Instanzen habe. Ansonsten wäre Pygame natürlich nicht übel. Kein ./configure & make und vor allem eine schöne saubere Syntax. Glaub ich muss einfach mal nebenbei testen wegen der Geschwindigkeit.

    Hab in den letzten beiden Tagen schon ein wenig mit D an GORC gearbeitet. Gibs ja für Windows und Linux und soll wohl auch nen Kompiler für Mac geben. Nach ein paar kleineren Fallstricken fühlt es sich auch gar nicht so verkehrt an. Derelict für meine SDL Bibliotheken und Tango für Strings, Arrays & co. XML und Dateien aus ZIP Archiven laden bietet Tango auch… später für GORC mit Lua Skripting schon mal nicht verkehrt.

    Visual Studio fällt leider flach, da es das ja nur für Windows gibt. Da habe ich aber schon ab und zu auf Dev-Cpp mit Mingw32 Compiler unter Windowszurück gegriffen. Gab glaub ich auch Wx*irgendwas* als ziemlich ähnliche IDE, welche auch unter Linux läuft. Oder halt codeblocks, läuft ja auch unter Win und Linux. Wenn ich also pro Platform ein kleines Makefile scheibsel, dürfte das für GORC ausreichen…

    Ich muss einfach noch ein bisschen meine Blicke schweifen lassen, wobei IDE’s kein Problem darstellen. Im Notfall reicht mir auch vim xD

  • 3. herc  |  Februar 5th, 2009 at 17:09

    naja, aber eine IDE kann schon die produktivität enorm steigern!
    ich benutze auch nur noch visual studio, weil es das http://www.visualassist.com leider nur für visual studio gibt. und visualassist ist der absolute produktivitäts-steigerungs-knaller! das solltest du unbedingt mal ausprobieren. ich will gar nicht mehr ohne coden.
    ansonsten ist wohl codeblocks sehr sehr gut. habs zwar selber noch nicht benutzt, aber viel gutes gehört. devcpp ist auch klasse, wird ja aber anscheinend leider nicht mehr weiterentwickelt.

    ansonsten hast du recht: C++ oder D ist wohl die beste wahl. damit reduzierst du die gefahren von langsamen , interpretiertem code auf null. und was scripting angeht: wenn man ganz krass unterwegs ist, könnte man da sogar scripting in c++ versuchen: die engine soweit komplett aufbauen, und dann script als dynamische dll gestalten, die dann nachgeladen werden kann. aber ok, das ist ja eigentlich für ein mittelgrosses projekt wie robot nicht nötig, da kann man auch einfach mal neu compilieren.

    aber zurück zum thema c++ / D : das wirklich schöne ist ja, dass der ganze overhead von Klassen und objektorientierter Programmierung in C++ so schön wegoptimiert wird! C++ ist nicht ohne grund immer noch die 1. Wahl auch bei professionellen Spieleprogrammierern.

    Soweit, A.

  • 4. Matthi  |  Februar 6th, 2009 at 00:38

    Das mit dem Skripting schwirrt mir natürlich noch immer im Hinterkopf rum, vor allem weil ja alle Robot Fans auf den Editor warten *lach* Aber jetzt steht erstmal eine saubere kleine Episode (vielleicht ja doch noch zu Ostern, hab da so ne Idee…) an. Und wenn die fertig ist sehe ich ja wie ich mit hoffentlich minimalen Anpassungen z.B. Lua einbauen kann.


Translator

Seiten

Letzte Artikel

Kategorien

Archiv

Meta


Page optimized by WP Minify WordPress Plugin