Engine dx9/dx11 oder aktuelles opengl gesucht

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

mpreu

Betreff: Engine dx9/dx11 oder aktuelles opengl gesucht

BeitragDo, Okt 31, 2013 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Also auch wenn der topic vielleicht komisch formuliert ist, so suche ich lediglich nach einer Alternative zu BB3D welche ich dennoch damit nutzen kann.

Also in Form einer DLL oder dergleichen.
Mir wäre wichtig dass die Syntax und das Handling via Entitäten recht ähnlich sein sollte.
BB3D ist nunmal mit seinem dx8 doch relativ veraltet und blitzmax da kommt wohl auch nicht mehr soooo viel.

Ich möchte nichts schwarzmalen, aber vielleicht weiß der ein oder andere ja eine zeitgemässe Alternative welche auch in ein paar Jahren noch supportet wird.

Wichtig wäre noch vielleicht wie oben schon erwähnt, ähnliche syntax und eben shaderunterstütztung oder sonstige effekte und neben dem 3D System auch 2D.
Und bitte nicht völlig verbugt.

Nicht hauen, ich suche lediglich nach Erfahrungen oder sonstigen Informationen diesbezüglich.

C++ ist nicht mein Ding und daher würd ich das basiclike schon vorziehen.

Xeres

Moderator

BeitragFr, Nov 01, 2013 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Bis auf 3D kann BlitzMax alles was du willst.
Vielleicht sagt dir aber NuklearBasic etwas mehr zu? Soll B3D sehr ähnlich sein.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

BladeRunner

Moderator

BeitragFr, Nov 01, 2013 8:35
Antworten mit Zitat
Benutzer-Profile anzeigen
B3D setzt gar auf DX7 auf, nicht 8.
Für BMax gibt es auch diverse 3D-Module, die jedoch alle ihre Macken und Tücken haben.
Nuclear Basic soll in der Tat recht ähnlich zu BB3D sein.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

PhillipK

BeitragFr, Nov 01, 2013 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
na wenn schon blitzmax, dann leadwerks 3 engine dazu. Top zu empfehlen, einstieg ist leicht wenn man b3d kennt. Nachteil: Die engine ist von natur aus leistungshungrig, lowend pc's packen das nicht. Nachteil2: Teuer.

Wenn man kein(kaum) geld in die hand nehmen will, auf jedenfall eine alternative suchen. Ansonsten: Blitzmax und leadwerks3 *meine meinung*
(leadwerks ist eine eigenständige engine, welche nativ mit blitzmaxsupport kommt. Alternativ lässt sich zb mit der internen scriptsprache über lua und den mitgelieferten editor was zusammenklicken / basteln. C++ wird meines wissens nach auch unterstützt, ebenso c#, wobei ich von der c# variante aufgrund von extremen private-genutze garnicht überzeugt war)

Ansonsten gibts für blitzmax noch das kostenlose minib3d modul. Das setzt meines wissens nach auf opengl, dürfte aber nichtmehr all zu aktuell sein. Genaues weiß ich nicht. Aber: MiniB3d ist, wie es schon vermuten lässt, Blitz3d nachempfunden. Alle funktionen etc sind gleich, dh die normale B3D hilfe kann im prinzip für minib3d verwendet werden.
Als kostengünstige alternative mit vorhandener blitzmax lizenz sehr zu empfehlen Smile

DAK

BeitragFr, Nov 01, 2013 10:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Die letzte Minib3d-Version ist jetzt schon 2 Jahre alt. Dazu kommt, dass (zumindest wie ich sie noch verwendet habe), es bei der MiniB3D nicht mal so Sachen wie Terrains gibt. Die gibt es dann schon in der MiniB3D-Extended, nur die ist schon länger tot, und nie fertig geworden. Mit genau B3D-Syntax wird's also nichts.

Wenns dir nicht um die Blitz-Syntax gehen würde, könnte ich dir die JMonkey3-Engine unter Java empfehlen. Die rennt wirklich gut, hat haufenweise fix eingebaute Effekte (z.B. Wasser mit Wellen, Gischt, Brandung, Reflexion, Beleutungsveränderung unter Wasser und Lichtmustern am Grund unterm Wasser), die sich extrem leicht verwenden lassen. Ist dabei nicht so schlimm leistungshungrig und schon sehr ausgereift. Wird auch noch weiterentwickelt.

Die Engine lässt sich recht ähnlich benutzen wie B3D (mit den Entities und so), hat dabei auch viele ähnlichen Befehle, nur dass es noch VIEL mehr kann, als man von B3D gewohnt ist.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Kruemelator

BeitragFr, Nov 01, 2013 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich dich richtig verstehen dann willst du mehr machen können ohne mehr machen zu müssen? Very Happy

Wenn ich mich nicht irre kann man DirectX direkt in BMax einbinden ohne irgendwelche extra geschriebenen .dll, stimmt das?
Um eine richtige Grafik-Api wirst du in der Zukunft nicht rumkommen wenn du vor hast weiter zu programmieren. Dann musst/darfst du aber alles selber machen.
Ich habe mir damals, als ich das erstemal eine andere Programmiersprache neben B3D genutzt habe, einfach das DirektX9 SDK runtergeladen und VS(c++) installiert. Das Verstehen ging dann meistens recht schnell.

Wenn du unbedingt das Entity-System brauchst dann kannst du es dir ja auch selber nach programmieren.
Das Wissen was du dafür benötigst ist das selbe was du für Shader-Programmierung brauchst.

BladeRunner

Moderator

BeitragFr, Nov 01, 2013 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Wenn ich dich richtig verstehen dann willst du mehr machen können ohne mehr machen zu müssen? Very Happy

So wirkt es auf mich auch, und da muss ich ein wenig ernüchternd einwirken: Eine höhere DX-Version bedeutet nicht automatisch bessere Ergebnisse. Grade Shader erfordern reichlich Einarbeitung und profunde Kenntnisse dessen was man da tun will.
Wenn Du DX7 beherrschst kannst Du dir Gedanken darüber machen wie Du höhere Engines ausnutzen kannst Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

mpreu

BeitragFr, Nov 01, 2013 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann wurde ich wohl falsch verstanden.....mir ging es nämlich auch darum dass selbst wenn ich dx7 komplett beherrschen würde, es mir nix nützt wenn es nichtmehr unterstützt wird.
 

Kruemelator

BeitragFr, Nov 01, 2013 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
DirectX 7 läuft auch noch auf Windows 8, DirectX war immer, ist noch und wird wahrscheinlich immer abwärtskompatibel sein.

Hubsi

BeitragFr, Nov 01, 2013 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe jetzt nicht wirklich viel von DX und dem Geplänkel drumherum, von daher mag die Frage doof klingen. Aber wenn DirectX abwärtskompatibel ist und wohl bleiben wird, wieso (von den Updates mal abgesehen) ist B3D dann in vieler Munde am sterben?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

DAK

BeitragFr, Nov 01, 2013 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil es eben nicht alles komplett abwärtskompartibel ist, vor allem nicht bugfrei-abwärtskompartibel, wie z.B. der Bugfix im letzten Update zeigt. Vor dem Bugfix war B3D unter Windows 8 deutlich schlechter zu verwenden, als auf älteren Windowsvarianten. Im Grunde sollte DirectX theoretisch ältere Versionen unterstützen, nur gibt es dabei hald eben öfters Bugs (ähnliche Probleme finden sich auf fast allen 2D- und 3D-Spielen, die auf Engines aus den späten 90ern, Anfang 2000 aufbauen).
Dazu kommt, dass es zwar mit DX kompartibel sein mag, aber sich mit Windows stören könnte.

Das andere Problem von B3D ist, dass es eben deutlich weniger mächtig ist, als andere Engines. Wie gesagt, um in JMonkey Wasser mit den oben erwähnten Effekten hin zu bekommen, braucht man ungefähr 5 Zeilen Code, alle nach dem Schema setWaterDepth(10), oder setWaterColor(r,g,b), also wirklich nichts schwieriges.

In B3D ist es auch möglich, Wasser mit ähnlich guten Effekten hin zu bekommen, nur reden wir hier über Funktionen mit deutlich mehr Umfang als 5 Zeilen.

Was das angeht, kann ich dem oft zitierten Statement von wegen "Wozu brauchst du Dx9/10/11, wenn du Dx7 noch nicht voll ausreizt" nicht ganz zustimmen. Ja, vielleicht hängt es nicht an der Dx-Version direkt, aber mit einer anderen Engine kann man schon deutlich unterschiedliche Ergebnisse erzielen.

In B3D waren meine Wassereffekte üblicherweise ein paar schichtweise übereinander liegende (um Tiefe zu simulieren) Planes mit einer animierten Wassertextur. (Damit ist mein Wassereffekt ungefähr auf dem Level eines Spieles von vor 2000, so UT99 oder so)

In JMonkey habe ich mit weniger Aufwand einen Wassereffekt, der gut mit einem professionellen Spiel von 2008 mithalten kann. Zur Demonstration habe ich hier eine Demo der JMonkey3-Wassereffekte hochgeladen.

Das mit Blitz hinzubekommen ist deutlich mehr Arbeit als mit neueren Engines.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Kruemelator

BeitragFr, Nov 01, 2013 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schon in den vorherigen Posts herausgekommen ist:
Es ist ein Verhältnis zwischen Einfachheit und Mächtigkeit. Beides zu haben geht nicht.

Wenn sich ein Spiel gut in B3D realisieren lässt dann lohnt es sich nicht extra dafür eine Entity-Klasse in einer anderen Programmiersprache anzulegen.

Wenn mpreu in mehreren Jahren immer noch am Spiele programmieren ist dann wird er sicher zu einer modernen Grafik-Api gewechselt sein, jeder von uns hier hat das.

@mpreu:
Ich habe 3 Jahre lang mit B3D programmiert bevor ich angefangen habe C++ zu lernen und DirectX 9 zu nutzen. C++ zu lernen hat nicht allzu lange gedauert, aber DirectX 9 zu verstehen war schwer, obwohl ich schon mit B3D ganz ordendliche Dinge zusammen bekommen habe.
Außerdem muss man alles von Hand machen.
Ein Beispiel:
RenderWorld() ein schöner Befehl in B3D. So etwas gibt es in Direct3D nicht. Um das selbe zu erreichen muss man deine zu rendernden Objekte selber verwalten in Listen und/oder Arrays. Dann muss man jedes Objekt einzeln rendern und vorher noch bestimmen ob es überhaupt sichtbar ist, um sich das Rendern zu sparen wenn möglich. Wenn du ein Objekt rendern möchtest dann musst du der Grafikkarte den Vertexbuffer und Trianglebuffer übergeben. Außerdem die jeweilige Textur.
Dann sagst du noch welcher Shader genutzt werden soll (in D3D9 gibt aber auch noch fixed function pipeline wie ihn D3D7). Dann braucht dein Shader aber auch noch seine Daten, z.B. die Positions/Dreh/Scalierungsinformationen des Objekts sowie der Kamera. Für die Kamera kommen dann noch die Informationen zum Projezieren von 3D auf die 2D-Oberfläche.
Wenn du das alles hättest, kann RenderWorld() immer noch mehr! Very Happy Z.B.: Licht und Transparenz.

Wenn dich das nicht stört, dann stört es dich auch nicht Sprachen wie C++/Java etc. zu lernen.

DAK

BeitragFr, Nov 01, 2013 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@Kruemelator:
Du hast schon recht, wenn man direkt auf Grafik-API-Programmierung wechselt, dann ist das schon ein harter Brocken. Ich hab auch schon mal ein wenig in OpenGL gemacht, und dort auch nur 2D-Objekte brauchbar hin zu bekommen, ist nicht einfach. Da ist es nicht mit einem einfachen DrawImage() getan.

Allerdings heißt in Java/C++/... zu programmieren ja auch nicht unbedingt, dass man direkt OGL/DX verwenden muss. Es gibt für die meisten großen Sprachen unzählige 2D- und 3D-Engines, die einem die Arbeit so sehr abnehmen, wie B3D es tut. Das ist ja das Schöne an solchen Sprachen. In B3D ist man so ziemlich dazu verdonnert, die B3D-Engine zu verwenden, da diese standardmäßig inkludiert ist.
In Java/C++ und vielen anderen Sprachen ist das nicht so. Dort kann man sich die Engine aussuchen. (Wenn man will kann man mit dem B3D-SDK ja sogar auf C++ programmieren.) Und je nach dem, was man will, kann man sich einfache Engines holen, die einem vieles abnehmen, oder mächtige, wo man viel machen kann.

Und dann gibt es noch einige Engines, die einen Mix aus beidem geben: Zugriff auf mächtige Funktionen, wie Shader selber programmieren, während sie gleichzeitig schon vorgefertigte Effekte anbieten, mit denen man mit ein paar Zeilen wunderschöne Effekte auf den Bildschirm zaubert.

Ich habe schon ein paar Engines ausprobiert, und von allen ist die B3D-Engine zwar die einfachste, aber auch deutlich die Schwächste. Wie sie rausgekommen ist waren Echtzeit-Schatten, realistische Wassereffekte oder Physik auch in professionellen Spielen noch sehr selten, weswegen es diese Befehle in B3D nicht gibt.
Moderne Engines bieten diese Effekte und Fähigkeiten in beinahe der selben Einfachheit wie B3D an. Wäre B3D erst jetzt rausgekommen, dann würde es sicher auch Befehle haben wie CreateWater() oder EnableShadows() haben. Das ist keine Frage der Balance aus Einfachheit und Mächtigkeit, sondern einfach nur deswegen, weil B3D veraltet ist.

Es gibt einige andere Engines, die kaum komplizierter sind, als B3D, dabei aber wesentlich mächtiger. Unity, Ogre oder JMonkey3 wären hier genannt.
Und im Gegensatz zu B3D sind die alle gratis und Ogre sowie JMonkey3 sind sogar open source.
Gewinner der 6. und der 68. BlitzCodeCompo
 

mpreu

BeitragFr, Nov 01, 2013 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab mir jetzt mal Unity3D angeschaut.
Ich weiß, hat nicht mehr viel mit coden gemeinsam wenn ich das mal so sagen darf.
Ist eher für Gamedesigner gedacht, oder irre ich mich da?

Auf was für Engines seid IHR denn alle so gewechselt, wenn ich das mal einfach in den "Raum" fragen darf.

BladeRunner

Moderator

BeitragFr, Nov 01, 2013 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Bin und bleibe ein Basic-Kind, habe aber auch keine hochstrebenden Ambitionen. BMAX ist toll.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group