Jump to content
Unity Insider Forum

Soulbound - Multiplayer RPG - Screens & Co


AgentCodeMonk

Recommended Posts

  • 4 weeks later...

Nicht mehr ewig, aber das passt schon ;)

 

Mal aus Spass, damit der ein oder andere sieht, was es für ein Monster ist, im Anhang mal ein kleiner Ausschnitt aus den mittlerweile 50k Zeilen Code :D

Diese Klasse gibt alle möglichen Werte zurück, die sich im Verlauf so ändern oder neu berechnet werden müssen. Die Klasse hat noch Kumpels: GameSettings.cs und GameHandler.cs.

Im GameHandler.cs gibt es nur Methoden, bzw Methoden die keine Werte zurückliefern. GameSettings.cs hat nur statische Werte, die sich nie verändern.

Der GameHandler greift dann auf diese Klassen zurück und verteilt an den richtigen Spieler oder NPC die richtigen Werte. Wobei es sich im Kontext nur um das Management der Stats handelt, der kann auch noch ein paar andere Sachen.

Für das "BattleSystem" ist natürlich...tada... die Klasse BattleSystem zuständig, auch diese macht gebraucht von der GameMath.cs

 

Ein paar der Formeln sind hier und da zusammen geklauft / rumprobiert und orientieren sich größtenteils an denen aus WoW, bzw was man so dazu finden kann... wenn man das so sagen darf. Nichts destotrotz ist es nicht zu unterschätzen das ganze zum laufen zu bringen ;) Ingame-Spezies/Rassen sind als enum angelegt und werden in der Datenbank natürlich als int gespeichert, sowie die CharacterClass etc pp nur um Beispiele zu nennen. Das ermöglicht natürlich einen schnellen austausch von namen usw.

 

https://dl.dropboxus...pts/GameMath.cs

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ohne die Funktionen zu studieren, muss ich sagen, Respekt für die ganze Mühe!

Allerdings fällt mir eine Sache auf: Die Klasse ist zu groß! 1820 Zeilen!

Du hast aber bestimmt gute Gründe dafür. Ich könnte mir vorstellen, dass du damit Performance sparen willst. Und eventuell willst du garnicht, dass dein Code übersichtlicher und leichter zu Warten/Erweitern/Modifizieren/Refaktorisieren ist ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es das? eine "zu große Klasse"? Ja, ich hatte bereits alles in kleinere Klassen unterteilt, mit dem Ergebnis, dass ich irgendwann nicht mehr wußte was wo in welcher Klasse liegt und ich da nicht auch noch mit Vererbung anfangen will... dann findet man irgendwas nicht und schreibt Dinge eventuell doppelt.

Daher gibt es eine Klasse, in der alle relevanten FORMELN liegen. Denn für nichts anderes ist diese Klasse gedacht;) Zum Großteil wird einfach ein int zurückgegeben.

Der Code ist ja komplett gefoldet und die entsprechenden regions benannt, ebenso die Methoden so sinnvoll wie möglich. Sowas wird nunmal auf Dauer nicht weniger, da die Verwaltung der Stats nunmal eine komplexe Kiste wird.

Leider ist das hier so aber zu sehen... daher hilft der schnelle Blick mal eben an der Stelle nicht ;)

 

Ich bin aber immer offen für Verbesserungsvorschläge, allerdings muss ich sagen, das für mich der Code gerade in dieser Form besser zu Refactoren( was sowieso nicht für jede Variable von Hand passiert, sondern beim Umbenennen automatisch läuft;) zumindest in VS, weiß nicht mehr wie ätzend das in MonoDev war...)

Auch beim Erweitern sehe ich kein Problem. Natürlich kann es passieren, dass man mal etwas scrollen muss, aber dafür ist es ja gefoldet;) ergo: auch nicht das Ding.

letztlich muss ich nur GameMath.GetIrgendwas(irgendswasHier); nutzen und ich weiß, dass ich dort IMMER das finde was ich brauche;)

 

Trotzdem würde ich gerne wissen wie du das angegangen wärst :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin einfach ein Fan von kleinen Klassen und kleinen Funktionen. Aber je nach Komplexität der Anwendung sind manchmal große Klassen echt nicht zu verhindern, da hast du schon recht.

Dann hast du ja noch sehr fleißig kommentiert usw. also ich verstehe schon, dass man da auf so viele Zeilen kommt.

Trotzdem ist das schwer verdaulich und kann bestimmt irgendwie sinnvoll aufgedröselt werden...

 

Ich hab mal so ne art RPG-Map-Maker in Java-Swing(o.0) versucht!!

Meine größte Klasse hatte da mal ca 800 Zeilen, da drehte sich quasi alles um Bildbearbeitungsfunktionen(Linie, Rechteck, Kreis, Ausfüllen, Löschen, etc.) auf Kachel-Ebene (z.B. 16x16 Sprites).

Wenn du mal gucken willst:

SpriteHandler.java

 

Ist mit der Zeit auch immer größer geworden, und gehört alles irgendwie zusammen. Trotzdem gefällt mir das nicht und ich würde es gerne irgendwie aufteilen.

Aber ich finde es auch praktisch, denn immer wenn ich irgendeine "Mal"-funktion brauche, weiß ich, in welcher Klasse die sein muss.

....mir fällt gerade ein, man könnte vielleicht mit Hilfe des Facade Design Patterns Abhilfe schaffen: Die ursprüngliche Klasse irgendwie sinnvoll in Einzelklassen aufteilen und dann eine Fassade-Klasse anbieten, die als zentrale Schnittstelle für die aufrufenden/nutzenden Klassen dient. Macht das Sinn?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, würde Sinn machen, wenn ich schrittweise Abläufe abarbeiten müsste oder sowas... also da eine Fassade vorzuhängen.

Aber dafür passiert dort drinnen zu wenig in Reihenfolge. Mal sehen, vlt drösel ich das nochmal etwas auf und pack da wo es sich lohnt eine davor...

Obwohl ich das im Moment eigentloch lieber nicht machen will, weil... alles schön an einem Platz ist^^ ..und es hier keine Reihenfolgen gibt. Dafür gibt es ja den GameHandler.cs... ach einen seiner Kumpels hab ich doch glatt unterschlagen: CharacterHelper.cs

Der kümmert sich um alles was rund um GameCharacters läuft. MeshSetup, Materials, Texturen usw...

Damit ist das Gespann zu viert;)

 

@Tenshi

thx

 

soulbound_screen_001.png

 

Nachts...mit bedrohlich grünem Himmel... ;) ...jaja, die Schatten sind identisch;) ...kommt dann irgendwann noch.

 

soulbound_screen_002.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Joar, zum Testen für die Ability-Icons. Die fliegen wieder raus. Müssen sie ja eh! Asche auf mein Haupt, weil vergessen zu erwähnen.

Die kannst du ja eh auf jedem 2ten WoW-Blog rechtsklicken und speichern :D

 

@AbeinG

Was heißt fertig machen... ist immer noch ne Menge Arbeit... ich versuche es.

Falls es nicht klappt, habe ich massiv viele brauchbaren Komponenten für kleinere Projekte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 month later...

Atm hab ich etwas Zeit um am Projekt weiter zu arbeiten :)

Ergo gleich mal den CharacterGenerator auf Herz und Nieren geprüft und siehe da: die Materialien für die EInzelteile werden noch nicht korrekt erstellt... Daher hat der Character weiße Ohren und Haare, mal abgesehen von der Textur, die nur angelegt ist und nun gepinselt werden will. Trotzdem ist der kleine Freund schon im Spiel und macht was er soll :)

 

soulbound_screen_003.png

 

weapon_mace_2h_0015 (click to view in 3D)

thumbnail_448.png

 

weapon_blade_2h_0029 (click to view in 3D)

thumbnail_448.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 7 months later...

3D-Modelling-Programme sind unheimlich bindend. Sie haben alle höchstens mäßige Bedienung und man braucht eine ganze Weile, eines davon einigermaßen zu beherrschen. Egal welches.

Und wenn man sich an eines gewöhnt hat, kommt man mit den anderen nicht mehr klar, weil sie alle unterschiedlich sind.

Hätte malzbie so viel Zeit in Blender investiert wie in C4D, hätte er keine Probleme mit Blender :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist inzwischen richtig, da ich sehr viel Zeit in Cinema investiert habe und hätte ich die Zeit in Blender investiert wäre alles genauso gut. Bis auf das Wohlfühlen.

Aber das Entscheidende ist, dass es ein Werkzeug ist welches bedient werden will. Die Einarbeitungszeit in Cinema war kurz und schon gab es gute Ergebnisse. In Blender ist diese Einarbeitungszeit um einiges länger um das gleiche Ergebnis zu erzielen.

Das will ich aber nicht investieren. Denn es bringt mir keinen Vorteil. Und wenn ich aus unternehmerischer Sicht das ganze beleuchte, dann kostet die Einarbeitungszeit viel Geld. Viel mehr, als das Kaufprodukt im Gegensatz zum kostenlosen Produkt kostet.

Der Vorteil beim Anschaffungspreis reicht mir nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist dass du in Blender doppelt bis dreifach so viel Zeit investieren musst um da hin zu kommen wie in Cine oder den anderen vergleichbaren Tools. Und egal wie du es anstellst, der Workflow wird immer langsamer und komplizierter bleiben als in anderen Programmen. Bestes Beispiel ist das Frage und Antwortspiel beim löschen von sagen wir mal einer Kante. Und viel Vergnügen beim anschliessenden Entsorgen der übrig gebliebenen Vertices ...

 

Dazu kommen die kommerziellen Plugins. Die allermeisten gibts schlicht nicht für Blender. Und wenn du dann nen gescheiten Wald brauchst wars das eigentlich schon.

 

Ich mag Blender, und kenne mich da auch einigermassen darin aus. Für alles andere bin ich schon lang nach Blender migriert. Ich modelle aber immer noch in trueSpace. Das ist seit fünf Jahren raus aus der Entwicklung, und war damals noch nicht mal fertig. Eher eine Alpha als eine Beta. Und troztdem bin ich da viel einfacher und schneller unterwegs. Und komme auch zum Ziel. Ich habe alle nötigen Tools auf Topebene in Ein-Klick Reichweite. In Blender suche und klicke ich mir da jedesmal nen Wolf.

 

Die grafische Oberfläche macht eben doch nen Unterschied, das ist nicht nur subjektiv ;)

 

Das Doowe ist dass du die Bären einfach nicht dazu bekommst Blender einfacher zu machen. Ich habe mir vor ein paar Tagen ein Plugin gebaut. Und muste mir dann von einem Blender Dev anhören dass er mein Plugin mehr oder weniger für sinnlos hält. Und natürlich wurde es dann weder in den Trunk eingebaut noch bei Blender gehostet. Dabei bringt es ein Feature mit das viele Leute vermissen weil es in fast allen grossen Programmen drin ist. Ein Reset View. Klar ist das ne popelige Sache. Aber eine die in Blender fehlt.

 

Selbst der mittelschwere Aufstand von Andrew Price hat nicht viel geholfen. Die UI Diskussion hat nur dazu geführt dass es da nun eine UI Group gibt. Und die ist Geschlossene Gesellschaft. Naja, ist vielleicht für die weitere Entwicklung auch nicht das dümmste wenn nicht jeder reinbabbelt. Dumm ist halt nur dass da die gleichen Leute drinstecken die schon die alte UI verbrochen haben. Das kann was werden mit weiteren Verbesserungen ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schade, hab garnichts von mitbekommen :D

 

hast du einen grund, dass du 3ds max nutzt und nicht blender oder gibt es keinen grund für?

Der Grund wurde schon genannt, aber ich ich schreib´s auch gerne selber nochmal: ich bin quasi mit 3dsMax "aufgewachsen". Maya und Blender sind mir auch geläufig, wobei ich bei Maya nur mal einen Kurs im Studium besucht habe, das war´s dann schon mit Maya. Max habe ich seit Beginn des Studiums genutzt (und das dauerte länger als normal ;) ) und bin dort entsprechend unterwegs, da es mich bereits über 7 Jahre begleitet.

Blender wurde immer mal so nach Laune verwendet, da bin ich kein Pro, komme aber relativ gut klar.

Im Moment hab ich auch Lust wieder Blender rauszukramen... Abwechslung hält die Rübe fit ;D

Für´s reine Modelling würde ich auch mal Silo2 antesten wollen. Der workflow ist dort recht gut, weil es sich auch einfach nur auf Modellierung beschränkt und seine Stärken ausspielen kann. Anyway...nun wirds wieder OT.

 

Sitz grade an nem concept art, vlt kommt´s bei Soulbound rein... und vlt überlege ich mir mal nen besseren Namen für das Projekt :D

Btw...ich sitze immer noch hin und wieder dranne wie Zeit ist. Allerdings gibt es atm nichts zu zeigen, da ich in erster Linie am Code werkel und hier und da optimiere und aufräume...

 

Anyway, hier mal der Stand des Concept Arts, obwohl ich unfertiges eigentlich imemr ungerne poste...aber da hier solange nichts Neues zu sehen war...

creat_mount_002.png

 

Gibt noch viel zu tun... bis jetzt alles aus der Birne, aber es wir Zeit sich Referenzen anzuschauen, Stichwort "Tatzen und Krallen".

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...