Mighty- Kingdoms 3D

Posted By: rai

Mighty- Kingdoms 3D - 12/31/06 16:25

Hallo!

Ich möchte mal wieder eins unserer Projekte vorstellen: Might-Kingdoms 3D.
Anfang 2006 ist das Browsergame Mighty-Kingdoms gestartet, und irgendwie haben wir dann angefangen, dafür einen 3d-Client zu programmieren...

Er sollte alle Funktionen des Spiels unterstützen (Gebäude bauen, Einheiten ausbilden, Gegner angreifen), und das eben schön mit Gewusel und Details darstellen.
Verwendet haben wir dafür nach langem testen die hervorragende GSHTTP.dll, auf dem Gameserver bietet Python eine sehr gute Schnittstelle.
Kurz bevor dann alle diese Funktionen unterstützt wuden, kam in MK ein neues Feature, ein Held mit dem man den Wald vor lästigen Bösewichten befreien kann. Und tada, wir haben uns überlegt, den client zu nem richtigen Multiplayergame zu machen: Man kann in öffentliche Bereiche auf dem Server reisen, sich dort à la GuildWars mit anderen Spielern zusammenschließen und gemeinsam die Wälder unsicher machen.

Für die öffentlichen Bereiche verwenden wir einen eigenen Server, der die Daten von allen Spielern in diesen Bereichen verwaltet. Für die Gruppen, die dann gemeinsam Gegner besiegen, oder auch gegeneinander antreten können benutzen wir eine schnelle Direktverbindung.

Die Außenlevel können mit einem WYSIWYG- Editor erstellt werden (Terrain texturieren, verformen, Entitys platzieren und Funktionen zuweisen). Er gibt recht handliche Dateien aus, die per automatischem update der Spielwelt beigefügt werden können.

Also man kann sehen, dass das Projekt vom Code weit fortgeschritten ist, leider gilt dies nicht für Modelle... überall laufen Warlocks rum oO


English: my english is still very poor, but i hope, you understand all
This game is a client for a browsergame (www.mighty-kingdoms.de) – all you do in this game is updated to the MK-servers. Additionally you can connect to a public area with your hero. There you can meet other heroes and fight against them or defeat Enemys with a small group of users.


So, und jetzt Endlich ein paar Shots:

Einige Gebäudemodelle:







Etwas technischer: hier sieht man 60.000 (!) animierte, hässliche 3d-Grashalme... ohne, dass die FPS wirklich zusammenbrechen (Auf einem Notebook mit Radeon 9000 IGP) – außerdem kann man das Fog-of-War- System erkennen

- here you can see 60.000 (!) animated (and ugly ) grass-models. With still good FPS. You can also see the fog-of-war-system .




MfG, Aike, wega3d

PS: Die Beta auf unsere Seite bitte nicht laden, Sie ist alt und macht Serverprobleme. Nächste Woche kommt die neue Version.
Posted By: aztec

Re: Mighty- Kingdoms 3D - 12/31/06 16:29

was soll ich dazu sagen
sieht echt nett aus
weiter so
Mfg
Aztec
Posted By: Ambassador

Re: Mighty- Kingdoms 3D - 12/31/06 17:08

That fog of war looks pretty cool =D. What kind of technique you used for it? Btw, do you use mipmapping for models? Those model skins look pretty crispy there, if you don't use mipmapping, I suggest you enable it from MED (mipmapping makes the skins look softer from a distance than without mipmapping). Though models without mipmapping could be a style also, dunno how many would like it though...
Posted By: Germanunkol

Re: Mighty- Kingdoms 3D - 12/31/06 23:47

60.000 grasshalme die so gut aussehen ohne fps drop? Wow... repeckt! Ich finc echt dass das grass gut aussieht!
Ich hab noch kein MMORPG mit 3dgs gesehen... vielleicht werdet ihr ja die ersten... irgendwie trau ich es euch zu. Good luck!!

Micha
Posted By: ShoreVietam

Re: Mighty- Kingdoms 3D - 01/01/07 08:06

Nicht schlecht, wie schauen denn die Gebaeude mit belichtung in der Spielwelt aus?

Wie laeuft denn bisher der Multiplayer part, funtioniert das gut (glaettung und so) ?
Posted By: rai

Re: Mighty- Kingdoms 3D - 01/01/07 14:28

Hallo und danke für das lob!

@ Samuel_Anjam: The fog-of-war is a shader - what else?! And of course we use ipmaps and LOD.

@ ShoreVietam: Die Gebäude machen sich in der Spielwelt ganz gut- Im moment machen wir gerade das Dorf neu, ich werde dann neue Shots hochladen. Der Multiplayerpart funktioniert bisher sehr gut. Wir konnten zwar noch nicht mit mehr als 20 clients testen, aber dabei gab es keine probleme. Es kommt im grunde nie vor, dass eine Spielfigur ruckelt.
Posted By: TheTommynator

Re: Mighty- Kingdoms 3D - 01/01/07 15:07

Das sieht echt gut aus

Das mit den 60.000 Grassmoddel ist auch echt beeindruckend.
Allerdings finde ich die Sichtreichweite des Fog-of-war sehr gering.

Macht weiter! Ein MMORPG mit 3DGS wäre echt geil
Posted By: Cobra7

Re: Mighty- Kingdoms 3D - 01/01/07 18:14

Hallo TheTommynator,
die Sichtweite kanst du mit magischen Icons (Infravisionsring, usw...) aufbessern.

Cu, Cobra7
Posted By: Samb

Re: Mighty- Kingdoms 3D - 01/01/07 18:34

hm grafisch bewerte ich mal ungern da es ja noch nicht "endversion" ist

würd mich aber technisch interessieren wie ihr sachen löst.
werden die spieler dynamisch erstellt? sprich werden strings etc. neu definiert damit der server alles verarbeiten kann und man nicht sozusagen "slots" vorprogrammieren muss?
wie speichert ihr die daten welche die spieler sammeln? mysql,gamestudio sav datei, txt..?
wie hoch war der traffic verbrauch bei 20 clienten?

und die wichtigste frage... wird es hack and slay oder ein spiel welches spass mach?
Posted By: frazzle

Re: Mighty- Kingdoms 3D - 01/01/07 20:48

As Samuel_Anjam mentioned, the fog of war system you posted in one of your screens looks nice, the houses and the rest of the models as well
Keep it up rai

Cheers

Frazzle
Posted By: PHeMoX

Re: Mighty- Kingdoms 3D - 01/01/07 22:42

Quote:

Etwas technischer: hier sieht man 60.000 (!) animierte, hässliche 3d-Grashalme... ohne, dass die FPS wirklich zusammenbrechen (Auf einem Notebook mit Radeon 9000 IGP) – außerdem kann man das Fog-of-War- System erkennen




Erstmal respekt dafür aber braucht mann wirklich 60.000? Hast du 30.000 probiert? Auch wenn 60.000 super läufen, ich glaube eigentlich kaum das beispielsweise 40.000 oder so stat 60.000 viel ändern würde. Ist nur so ne gedanke.

Also, im moment sieht alles sehr gut aus, ich bin mal gespannt wie das aussehen wird mit die gebäude ins level und ein anderes character unsw. Viel glück!

Mfg,
Posted By: rai

Re: Mighty- Kingdoms 3D - 01/01/07 23:46

@ Samb: Die Helden werden dynamisch erstellt. Fast alle Werte sind in mySQl Tabellen auf dem Server. Wenn sich jemand in einen öffentlichen Bereich verbindet, wird sein Name, seine IP und ein paar Positions- und Aussehensdaten in eine Liste auf dem Server eingetragen. Will nun jemand mit ihm chatten, ihn in seine Gruppe aufnehmen oder Handeln wird eine Direktverbindung (Client-Server) aufgebaut, über die alle weiteren Daten übertragen werden. So hat der Server wenig arbeit, und die Datenübertragung ist viel schneller, was gerade im Kampf wichtig ist.
Bei 20 Spielern liegt der traffic auf dem Server bei ca. 300 kbyte/minute. je nachdem, was die Clients machen, können sie aber mehr taffic haben.
So, und ob das nun alles Spass macht, müssen wir nocht esten lassen

@Frazzle: I´ll do my very best

@PHeMoX: Natürlich braucht man so viel nicht, ich wollte nur mal zeigen, was möglich ist der Wert war auch eher willkürlich festgelegt. Aber man sieht schon den unterschied, den 1000 Halme ausmachen.
Posted By: Samb

Re: Mighty- Kingdoms 3D - 01/02/07 00:14

direktverbindung? heißt ein client wird der server und über ihm laufen dann die prozesse der anderen?
Posted By: rai

Re: Mighty- Kingdoms 3D - 01/02/07 01:32

Quote:

direktverbindung? heißt ein client wird der server und über ihm laufen dann die prozesse der anderen?



Nein, es ist ein dezentrales Netzwerk. Jeder sendet jedem alles. Das macht zwar ne Datenflut (wobei wir das ziemlich gering halten), ist aber immer noch viel schneller, als wenn gerade ein modem-user zum server wird.

Dazu wird beim Connect in einen öffentlichen Bereich ein Server gestartet, und für jeden, mit dem Daten übertragen werden sollen, ein Client. Das meinte ich mit Client-Server.
Posted By: rai

Mighty- Kingdoms 3D - wip - 07/28/07 23:02


Posted By: DavidLancaster

Re: Mighty- Kingdoms 3D - wip - 07/29/07 06:56

From the screenshots the visuals are at 5-10% (of what they could be), adding lightmapping to these models will increase that to at least 50% (not sure if you planned on it or it's been mentioned already). You're taking a good direction. Graphically nothing can compare to lightmapping, if you don't do it your game will suffer graphically.
Posted By: ShoreVietam

Re: Mighty- Kingdoms 3D - wip - 07/29/07 08:54

You shouldn't Weld around edges.

The shading trys to make a spheric shading look, but since houses and stuff are no spheres you shouldn't do that.

Just look at the image welded edges VS unwelded edges :



This is another example, just look at the shading effect even without any texture:






Posted By: Damocles

Re: Mighty- Kingdoms 3D - wip - 07/29/07 16:14

Also nochmal:
ihr benutzt die Post/get funktionen von HTTP (mit der dll) um
das Spiel sozusagen (wie in einem Browser sonst auch)
direkt per 3dgs zu steuern?

Und dann habt ihr einen seperaten Server, mit dem ihr
(Echtzeit ?) Kämpfe austragen könnt.
Läuft das dann mit den "normalen" multiplayer funtktionen von 3dgs?

Ich hatte auch mal in einem Thread so eine dreidimensionalen "Browser" client angedacht.
Wär interessant das mal in Aktion zu sehen.
Posted By: rai

Re: Mighty- Kingdoms 3D - wip - 07/30/07 12:57

Ja, wir benutzen die GSHTTP.dll um das Browsergame zu steuern.
Wir rufen zum beispiel http://s1.mighty-kingdoms.de/client.py/stadt?sessid=XXXXXXXXXX auf und erhalten dann (bei gültiger Session) die Daten vom Server, das sieht etwa so aus:

Code:
  
8 dermeister 89.58.136.236
29 19 12 14 18
23 15 9 11 14
0 194 165 Avalon 651000 651000 651000 651000 651000 651000 20000
0 25 25 25 25 25 13 25 25 25
0 3 3 1 0 0
0 10 1 1 1 1
0 1 1801 0 500 1500 0 500 0 7
0 807 1341 2422 2148 1615 2000 25000 100 700
0 0 0 0
1 193 164 Meisterstadt1 589000 589000 589000 589000 589000 579990 19300
1 25 25 25 25 25 7 23 18 25
1 3 3 1 0 0

...



Das wird dann in ner Funktion auseinandergenommen und in Arrays gesteckt, fertig.
Dann gibt es den Held, der die eigentlichen neuen Funktionen ins Spiel bringt.
Zunächst wird mit GSHTTP.dll eine Liste aufgerufen, die alle IPs und Playernamen zurückgibt, die diese Adresse in den letzten 40 Sekunden aufgerufen haben, außer natürlich die eigene:

Code:
  
<?php
$neue_ip=$_SERVER['REMOTE_ADDR'];
$timestamp=time();
$name;
$ablaufzeit=$timestamp-40;

mysql_connect(...) or die ("Keine Verbindung moeglich");
mysql_select_db(...) or die ("Die Datenbank existiert nicht");

mysql_query("DELETE FROM bereich1 WHERE time < '$ablaufzeit'");
$ergebnis = mysql_query("SELECT ip, name FROM bereich1 WHERE ip!='$neue_ip'");

while($row = mysql_fetch_assoc($ergebnis))
echo($row['ip'].'|'.$row['name'].'|');

mysql_query("UPDATE bereich1 SET time='$timestamp', name='$name' WHERE ip='$neue_ip' LIMIT 1");
if(mysql_affected_rows() != 1)
mysql_query("INSERT INTO bereich1 (ip,time,name) VALUES ('$neue_ip','$timestamp','$name')");
?>



Alle diese Namen stehen dann ingame in ner Liste und man kann 5 davon zu seiner partie hinzufügen.
Mit dieser kann man dann Items austauschen, chatten, Gegner besiegen.... eben alles, was Spass macht
Das geht über ne eigenen DLL, die im grunde nur 2 dinge kann: in nem Thread wird ein Server gestartet, wenn er was empfängt wird in 3dgs eine Funktion aufgerufen und das empfangene als Parameter übergeben und eine Funktion, die einen String an eine beliebige IP sendet (sendString("127.0.0.1","Huhu!") - das reicht aus.


Wenn zum Beispiel jemand seinen Helden zu einer neuen Position laufen lassen will, wird zu allen 5 IPs in der Liste dieser String gesendet:

Kommandonummer|eigene IP|held.x|held.y|ziel.x|ziel.y

und bei allen anderen düst der Held los, selbst bei Modem kann man keine Verzögerung feststellen. Der Vorteil ist, dass auf diese Weise so wenig Daten übertragen werden, dass das langsamste Modem mitkommt. Nicht jede Zielgruppe hat ja DSL und steht auf über-graphik

aber btw: wir brauchen Hilfe, was die Modelle angeht. Nicht unbedingt qualitativ, das muss alles nicht perfekt sein, eher von der Anzahl. Wenn jemand viel Freizeit hat, bitte melden
© 2024 lite-C Forums