Multiplayer RPG

Ich wollte schon immer mal ein Multiplayer RPG machen, aber leider sind meine Programmierkenntnisse (insbesondere Netzwerkcode) nicht gerade
dazu geeignet. Da Clonk ja nun OpenSource ist inkl. Netzwerkcode und in einer freien Lizenz verfügbar ist, kann man CR mittlerweile - denke ich - einfach
als 2D-Engine betrachten. Entsprechend wage ich nun den Versuch ein letztes Mal. Momentan bin ich gerade etwas am experimentieren, wie sich ein eigentlich
Tile-basiertes Spiel bequem in Clonk umsetzen lässt. Bis jetzt bin ich noch überzeugt, dass sich dies gut in Clock umsetzen lassen sollte.
Einige erste Hürden wie z.B. das Bewegen und Animieren von Figuren ohne Gravitation und ohne einen Beschleunigungseffekt durch FLOAT und so konnten bereits genommen werden.

Ein bisschen langweilig und man sieht so ziemlich nichts, aber momentan sieht das noch so aus:



Geplant ist, Karten als riesiges Objekt mit unbegehbaren Tiles als SolidMask. So muessen nicht 100x100 kleine 32x32 Pixel Tileobjekte erstellt werden. Denn sonst muesste die Engine schon mal
mehr als 10000 Objekte verwalten.

Wäre es dann nicht geschickter, OC zu verwenden? Du baust ja sowieso nicht auf den CR-Spielinhalt auf, und die Möglichkeiten als universelle 2D-Engine haben sich dort sicherlich verbessert (z.B. freie Tasten- und Mausverwendung).

Find ich super. Ich hab schon relativ oft die Clonk-Engine für Draufsicht Spielideen misshandelt und kann dir sagen: Du wirst schnell die Grenzen sehen.

Was mir bei deiner Idee sofort in's Auge fällt: Selbst mit größeren Tiles ist Clonk einfach nicht perfomant genug hierfür.
Es würde einfach schon deshalb viel Perfomance beanspruchen. (Hab damit schonmal rumexperimentiert -> große scheiße.)
Es ist schlauer die Karte als ein einziges Objekt zu haben, und daran die Solid Masks definieren.
Sorgt zwar für eine größere Projektgröße und grenzt einen mehr ein, aber anders hat man jedemenge Lagg.

Charakter Animation und Bewegung ist kein Problem. Steuerung wieder eine andere Geschichte… Die ist arg begrenzt. Allein die Maussteuerung ist fast schon sinnlos.
Und du hast die nerven standard Clonk sachen. Sprich: Huds, Portraits, Lebensleiste, Cursor, usw.

Mein Tipp an dich: Befasse dich mit Open Clonk.

Da hast du eine optimiertere Engine, kannst die komplette Tastatur belegen (wimni) und die Mausposition abfragen.
Und das tolle Partikelsystem nicht zu vergessen!

Mittlerweile mal ein Script geschrieben welches mir die Maps generiert inkl. SolidMask.



Mal ein wenig portiert auf OpenClonk. Leider kann ich die Tasten unter Optionen nicht konfigurieren. Das ist irgendwie buggy.

Warum genau auf der Clonk-Engine? Gibt es nicht viele kostenlose RPG-Maker, mit denen das möglich wäre?

Welche, die Netzwerunterstuetzung bieten? Abgesehen davon, kenne ich mich noch einigermassen mit Clonk-Dev-Zeugs aus. Das ist natuerlich auch ein kleiner Vorteil ;).

Ich weiß zwar nicht genau, was und wie du es machen willst, aber wie wäre es, wenn du statt Tiles im Hintergrund einfach Materialien verwendest?
Also wenn du neue Hintergrundmaterialien mit eigenen Texturen/Farben erstellst für nicht animierte Hintergründe, die nur zum schön aussehen da sind wie zB der Blumenwiese-Hintergrund. Ich würde vermuten, dass das sehr viel performanter als viele Objekte im Hintergrund wäre. Die nicht begehbaren Objekte/Tiles müssten dann vermutlich trotzdem mit Objekten realisiert werden.
Es kann natürlich sein, dass das nicht in dein Konzept passt, war nur ein Denkanstoß meinerseits.

Da fällt mir noch etwas ein: GIDL-Race
Da ist die Karte auch aus Materialien aufgebaut mit verschiedenen Texturen, man kann sich mit Draufsicht bewegen und alles funktioniert ganz gut, sowas in der Art mein ich.

Ja, das scheint mir um einiges sinnvoller. Warum sollte man die Clonkengine nehmen und dann ueberhaupt nicht die Landschaft nutzen?

Ich glaube, die meisten RPG-Maker sind eher darauf ausgelegt, möglichst viel Spiel zu erstellen ohne eine einzige Zeile Code zu schreiben - mit dem Ergebnis, dass viele Dinge kaum oder nur sehr schwer möglich sind.

Dann bräuchte er auch keine solid masks.



^- mit OC-Materialien. Buesche gehen so allerdings nicht. Die muessen dann wohl als Objekte platziert werden. (Es sei denn, jemand findet raus, warum sie so seltsam abgeschnitten werden wenn sie als Material
eingesetzt werden).

Das erinnert mich an:



Hat schon bei rund 100 Bäumen angefangen zu laggen (34 FPs)

Deswegen wurde die Map in mehrere Abschnitte eingeteilt: Befindet sich der Clonk in einem bestimmten Bereich, so wird ein Abschnitt geladen und ein anderer gelöscht.

Ja. Ich wuerde Buesche am liebsten gerne via Material platzieren. Aber wie man z.B. auch an der Mauertextur im obigen Bild sieht, schneidet OC nicht an den richtigen Grenzen ab.
Ich versuche daher mal, Buesche als Objekte platzieren, wobei ich gleich mehrere Buesche jeweils als ein Objekt zusammenfassen werde.

Warum machst du nicht eine "Massbandtextur", d.h. ein Gitter von z.B. 16x16 Pixel Abstaenden und testest den Zoom InGame? Dann weisst du, wie stark die Texturen von der engine gezoomt werden und kannst die Buesche entsprechend skalieren.

Alternativ schaust du im Sourcecode des Landschaftsrenderers (planet/Graphics.ocg/LandscapeShader.c und src/graphics/C4LandscapeRender.cpp). Oder du ueberlaedst Graphics.ocg/LandscapeShader.c mit einem eigenen Shader, der nicht zoomt.

Ein eigener Shader kann dann btw auch Texturen mischen. Also zum Beispiel Baeume auf verschiedenen Materialien zeichnen.

Sorgt denn der Zoom dafuer, dass er nicht an den richtigen Orten abschneidet?

Wie gross ist ueberhaupt ein Landschaftspixel? Also wenn in der Map.bmp ein Pixel Grass ist, wie hoch und wie breit ist das dann in der Karte? Wird das durch den MapZoom geregelt?
Also MapZoom=32 bedeutet, dass 1 Pixel in der Map.bmp einem 32x32 Quadrat Ingame entspricht. Idealerweise wuerde die Engine/Shader dann auch gleich eine 32x32 Textur richtig geschnitten darauf abbilden.



^- das ist ein Ladschaftspixel mit einer 32x32 Textur mit MapZoom=32. Die Blaue Linie ist bei X=15 in der Textur.

MapZoom groesser 16 wird ignoriert. Das Bild unten zeigt ein 2x2 (map.bmp) Pixels Quadrat mit MapZoom=16. Gezeichnet wird es als Quadrat mit 31x31 (nicht 32x32 wie ich jetzt gerade erwaertet haette).



siehe auch:



die gelbe Linie entspricht dem rechten Rand der Textur. Die hellblaune Linie ist der untere Rand der Textur.

So ganz allgemein gefragt, was spricht gegen die Clonk-Perspektive?, also das 2D von der Seite. Es ist auf jedenfall die seltenere Variante, und wuerde dir sofort Raum geben sich abzuheben von anderen RPG-Maker Sachen.

Man kann ja Die Landschaft dann statisch machen oder so, wenn das Rechenkraft bringt. Aber auf jedenfall muss man dadurch nicht das halbe Clonk umschreiben und kann die Clonk Features eben auch einfach verwenden und leicht anpassen:

http://bulk.destructoid.com/ul/113904-retrose-tinted-wizards-and-warriors-iii/05-468x.jpg - bin sowieso ein Fan von der Seitwaerts Variante.

ist sicher mal schwieriger Graphiken dafuer zu finden. Ausserdem kannst du dann ja gleich ein RPG mit normalen Clonks machen. Im Uebrigen wurde das das Materialproblem nur verkomplizieren denke ich.
Du brauchst dann ja spezielle Materialen fuer links/rechts/oben so wie bei Plattformern ueblich. Im uebrigen will ich btw. kein Rundenbasiertes Player vs. Monster bzw. PvP machen sondern das soll Echtzeitig/Interaktivig sein. Sogar eher ein bisschen in Richtung
Bullet-Hell teilweise.

>Ausserdem kannst du dann ja gleich ein RPG mit normalen Clonks machen.


Jo warum nicht? Die wahre Herausforderung sollte doch eher das M im Titel sein, nicht das RPG, oder? - Wenn du eh Sections wechseln und speichern musst, das kann Clonk doch bereits super. Bin jetzt einer der groessten Informatiker-Laien hier, aber wenn du jetzt einfach 10 Spiele hostest 10 Maps, und man wechselt nicht die Section sondern den Server (lzb like?) - und uebertraegt ein par Daten mit (so wie beim Turm der Verzweiflung? Welches Stockwerk). Klingt erheblich machbarer als vor dem Roadtrip ersteinmal das Auto neu zu erfinden.

>ist sicher mal schwieriger Graphiken dafuer zu finden.


Fuer den Anfang zusammenklauen aus allem woran du denken kannst, in Clonk allein gibts da ja schon unmengen.

>Du brauchst dann ja spezielle Materialen fuer links/rechts/oben so wie bei Plattformern ueblich.


So one way passages, wie bei Mario (man springt von unten durch die Pilz plattform und landet darauf)? Ich meine sowas schon gesehen zu haben in Clonk.

P.S. Wenn man dann die ganzen echtzeit-Map-Features wie Graben und so raushaut, ists am Ende vielleicht sogar richtig flott performant?