PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MMORPG Programieren



Mafio
18.07.2009, 19:03
Hey,

ich hab da mal ne Frage ^^:

Mich würde gern mal interessieren wie so ein MMORPG Spiel aufgebaut ist.
Wenn ich jetzt selbst anfangen wollte sowas zu programmieren, welche Sprache(n) kann man dafür am besten verwenden? Wie muss man vorgehen, also was zuerst?

(Soll jetzt nicht sowas doowes sein wie: "Sucher Cooder für Projekt WoW2 in Java" ^^) Mich interessiert halt nur die Theorie wie man sowas anfangen könnte. ;)

Danke schonmal

CKCK
18.07.2009, 19:12
Für ein MMORPG eignet sich C++ sehr gut. Auf Platz 2 ist C#.
Auf jeden Fall ist es sehr viel Arbeit.

Dexx
18.07.2009, 19:14
Überlege mal wielange die großen Firmen alleine brauchen
ein Spiel herzustellen und die haben Teams mit Codern und
Mappern usw. du alleine würdest in 50Jahren nicht fertig sein.

World of Warcraft:

der Kern ist iirc in C mit einigen
C++-Elementen geschrieben,
http://www.infoworld.com/article/07/1... (http://www.infoworld.com/article/07/11/06/World-of-Warcraft-meet-Visual-Studio_1.html)

die gesamte Spiellogik aber in Lua:
Lua ist in C geschrieben.
http://www.lua.org/source/5.1/

Publix
18.07.2009, 19:17
Ein spiel zu programmeiren im format f2p sehen wir uns dazu mal Rappelz an.

Dafür braucht man mit einem guten team ca 1 jahr.. ich denke der source ist auch ca 150.000€ wert.

Asmodeus
18.07.2009, 19:22
hatte auf der Platte noch nen Artikel zu wie man ein Projekt aufbaut weiß aber nicht mehr wo ichs her hab deshalb kann ich dir die Quelle nicht nennen.
Hier der Artikel

1.Schritt: Die Idee und das Konzept
Zunächst solltest du dein Idee schriftlich Formulieren. Am besten schaffst du dir sogar einen Ordner an und heftest dort alle Seiten ein, die du im Zusammenhang mit deinem Projekt erstellst - 80 Seiten können das schon bei einfachen Projekten werden. Mein aktuelles (und erstes) Projekt hat bereits in den Anfängen mehr als 30 beschriebene Seiten (inkl. Skizzen, Konzeptzeichnungen, etc.).
Was solltest du alles niederschreiben? Nun, zunächsteinmal jede erdenkliche Idee, das gesamte Konzept und zwar nicht nur in den Grundzügen, sondern im Detail. Wenn du z.B. einen Rollenspiel amchen willst, solltest du gleich als erstes die gesamte Story aufschreiben. Wenn du kein cooles Ende findest und ca. 5 Stunden Programmierarbeit verworfen werden muss, ist das nicht sehr ermutigend http://forum.giga.de/images/smilies/wink.gif. Wenn du eine Idee wieder verwirfst, soltlest du das Blatt trotzdem nicht unbedingt wegschmeißen. Vielleicht kommt dir später eine Idee, wie du das verworfene doch noch auf eine andere Weise einbinden kannst. Eine ständig erweiterbare ToDo-Liste solltest du auch unbedingt anlegen, damit du später den Prozess der Programmierung genau nachvollziehen kannst und in etwa weißt, wieviel Prozent du schon geschafft hast.
Du solltest dir klar machen, dass der Inhalt dieses Ordners sich während des Konzeptes noch gehörig ändern wird bis du dich an die Programmierung machst.

2.Schritt: Das Team
Wen brauchst du alles für dein Projekt? Nur einen Grafiker? Vielleicht aber auch einen (zweiten) Programmierer, der z.B. 3D-Animationen, Netcode, Forum, o.ä. parallel mit dir umsetzt? Kannst du einen Verdienst in Aussicht stellen? Alle Fragen rund um das Team klären sich in diesem Schritt. Selbstverständlich aknnst du jeden x-beliebigen Helfer in dein Projekt einspannen, doch solltest du bei den LEuten auch etwas darauf achten, dass sie nicht die absoluten Anfänger sind und viellicht einen Eindruck auf dich machen, dass sie nach 2 MOnaten schon vom Projekt abspringen. Du solltest unbedingt sicherstellen, dass sich das Team nach diesem SChritt nicht mehr verändert.

3.Schritt: Diskussion und Verteilung der Aufgaben
Im dritten Schritt stellst du deinem Team das Projekt (das im groben schon bekannt ist) im Details vor. Als Projektleiter solltest du keine Scheu haben, viele deiner Ideen zu verwerfen, wenn die Mehrzahl deines Teams sie schlecht finden, kannst aber Ideen, von denen du absolut überzeugt bist, durchaus durchsetzen, auch wenn die anderen sie nicht so gut finden. Nach der Besprechung verteilt ihr auf die einzelnen Personen klar definierte Aufgaben und - bei ehrgeizigen Projekten - durchaus auch deadlines, die bei der Koordination helfen sollen. Deadlines sollten unter Hobbyprogrammierern aber keinesfalls zu streng angesehen werden. Bestenfalls als freiwillige Richtlinie. Denke imemr daran, dass jemand aus deinem Team im Zweifelsfall eher abspringt, als sich herumkommandieren zu lassen. Sind alle AUfgaben verteilt, so wird der Ordner abgeschlossen und keine Änderungen mehr erlaubt.

4.Schritt: Erstellen des Produkts
Im vorletzten SChritt wird das Projekt schließlich mit Output versehen: dem Produkt. Bis zu diesem Punkt ist möglicherweise bereits ein ganzes Jahr vergangen - vielleciht sogar schon 2. Wenn sich jeder fleißig an seine AUfgaben setzt, dann kann die Programmierung schon 1 Jahr später Betareif sein. Mitunter braucht ihr als Hobbyprogrammierer sogar 2 Jahre oder mehr für diesen Schritt. Je nachdem, wieviel Zeit jeder investieren kann.

5.Schritt: Die Testphase
In dieser Phase ist das Programm im großen und ganzen fertig. Es muss nurnoch auf Herz und Nieren geprüft werden. Du kannst mit dieser Phase im kleinen Rahmen schon während der Programmierung beginnen, um eventuelle Fehler (oder Bugs) gleich zu beseitigen - je größer der Code nämlich wird, desto schwieriger ist das debugging. Ihr solltet die sog. beta-Version auch an einige Freunde weitergeben, damit ihr wirklich den Großteil aller Fehler beseitigen könnt. Wie lange diese Phase dauert, kann man nicht sagen. Fallen den Testern viele Bugs auf, könnt ihr durchaus 3-4 Monate daran sitzen - vor allem auch dann, wenn die Bug-Nachrichten nur so nach und nach eintrudeln.

6.Schritt: Support und Wartung
Dieser Schritt ist nie wirklich zuende, da kein Programm perfekt ist und jeder User irgendwelche Fragen hat, die beantwortet werden wollen. Auch Debugging und damit verbundene Patches gehören dazu.


Ich möchte hier keinem Angst machen, ein Projekt anzufangen, doch habe ich schon etliche Projekte gesehen, die abgebrochen wurden, weil die notwendige Struktur in der vorgehensweise fehlte. Die Zeiten für die Dauer der Bearbeitung des Projekts sind großzügig bemessen, d.h. unter Könnern kann das ganze Projekt auch durchaus in einem Jahr fertig werden. Weniger als ein Jahr würde ich aber nicht einplanen.
Bitte ggf. noch um Ergänzungen und Berichtigungen.

Blacksummer
18.07.2009, 19:49
Es ist zweitrangig welche Programmiersprache man hierfür benutzt. Es eignet sich natürlich C++, aber es ist auch in Pascal o.a. machbar. Das wichtigste am MMORPG ist wohl die Netzwerkstruktur und die Physik Engine. Bevor man sich an ein MMORPG wagen sollte, sollte man mit einem 2D Jump'n Run Anfangen, nach etwa 10 Jahren besitzt man das Know How um die Grundstrukturen eines MORPGS zu realisieren, mal abgesehen vom Kampfsystem und der Grafik Engine.
Das nächste Problem wäre die Engine, selbst Programmieren würde einiges an Zeit einnehmen, aber es gibt kaum, bzw. garkeine guten Engine's für MMOS, was nicht grad verwunderlich ist.

Lass es einfach. Du hast keine Chance. Ich arbeite derzeit an einem Multiplayer Funktionsfähigen 2D RPG und das ist schon sehr Schwer und ich bin oft am Verzweifeln.
Schau dir die Sprache C++ an, dann noch OpenGL und lern die Grundprinzipen des Programmierens. Dann können wir weiter reden.


Ein spiel zu programmeiren im format f2p sehen wir uns dazu mal Rappelz an.

Dafür braucht man mit einem guten team ca 1 jahr.. ich denke der source ist auch ca 150.000€ wert.Ein Jahr? Schau nicht durch eine Pinke Brille in die Pinke schöne Welt! Pah, dass ich nicht Lache. 3-6 Jahre mindestens. Der Source 150.000Euro Wert? Falsch, mindestens das drei Fache ;)


Es gibt ein Programm, womit man sich MMORPG's zusammenklicken kann, es heißt Hero Engine und kostet etwa 500000 Euro. Wenn es dir Wert ist, viel Spaß.
http://www.heroengine.com/

Mafio
18.07.2009, 19:58
Also C++ und C# kann ich auf jeden fall schonmal.

Und mir ist durchaus klar das sowas mehrere Jahre für ein Team und mehrere Dekaden für eine einzelne Person dauern würde. Aber wie gesagt, ich wollte es theoretisch mal wissen ;)

Blacksummer
18.07.2009, 20:02
Also C++ und C# kann ich auf jeden fall schonmal.



Wenn du C++ könntest (was ich nicht Abstreiten will), dann würdest du nicht so eine Frage stellen. Lies dich weiterhin in C++ ein (und lass C Sharp erstmal sitzen) und experimentiere mit TCP/UDP... herum. Schon alleine die Netzwerkstruktur wird dir Probleme bereiten. Dann solltest du dich noch in OpenGL/DirectX einlesen bzw. einarbeiten,welches nicht ein Spaziergang ist.
Schließlich noch ein Hauch von Physik in die Sache und voila ein MMORPG ist konzipiert. Oberflächlich gesehen ist es Simpel.

Mafio
18.07.2009, 20:10
Also nen Physik Fan bin ich sowieso ^^, aber da ich mich bei C++ bisher nur auf irgendwelche großen und kleinen Anwendungen beschränkt habe und nicht mit Spielen, habe ich nur wenig Erfahrung DirectX und dergleichen, genauso wie es auch ein wenig beim KnowHow im Netzwerkbereich mangelt.

Allerdings sehe ich jetzt nicht warum ich nicht so eine Frage stellen dürfte? Wenn man sich mit nicht sehr vielen Programmiersprachen beschäftigt und in C++ merh in richtung Konsolenanwendung und andere Anwendungen arbeitet, kann man sich doch trzdem mal erkundigen ob es nicht noch bessere Sprachen für sowas gibt ?°^

nathex
18.07.2009, 20:18
Also ich möchte nun nicht behaupten, dass C++ das "beste" fürs programmieren im Bereich Spieleentwicklung ist. Und wie Blacksummer schon sagte: Möglich ist es mit JEDER Hochsprache. (Mal VB außen vor gelassen... aber das zählt für mich nicht zu Hochsprachen, sondern zu Krankheiten :))

JEDOCH, wenn du bei einer weltweit bekannten Firma (bspw. Blizzard oder Valve) an einem Projekt teilnimmst, dann wird der Kern, oder auch die Engine des Programms i.d.R in C/C++ geschrieben.


Also C++ und C# kann ich auf jeden fall schonmal.

Ich wage es zu bezweifeln, dass duu komplett C++ und C# kannst...

Mafio
18.07.2009, 20:22
Kann man den je eine Sprache komplett?

Ich ging davon aus das mit "kann ich auf jeden fall schonmal" das dass von jedem hier als "ich beherrsche die Grundkenntnisse und kenne mich auch schon tiefer mit der Materie aus" verstanden wird.

nathex
18.07.2009, 20:28
Kann man den je eine Sprache komplett?
Natürlich nicht.


ich beherrsche die Grundkenntnisse und kenne mich auch schon tiefer mit der Materie aus
Das Problem ist, dass dir die "Grundkenntnisse" nichts in diesem Bereich bringen werden. Du musst wissen wie du mit OpenGL und/oder DirectX richtig arbeitest etc. etc.

Ich bestreite nicht, dass du gut C++ beherrschst. Allerdings musst du dich beim Programmieren von Spielen auf ->einen<- bestimmten Teil konzentrieren. Deshalb kann man ein richtig gutes Game auch nur mit einem großen Team programmieren -> weil es für jeden Bereich einen "Spezialisten" gibt, der sich auf Programmierung im zuständigen Bereich spezialisiert hat!

greetZ

Mafio
18.07.2009, 20:31
Ja, und weil ich grade in dem Teil der gar nicht so viel mit Spielen zutun hat heimisch bin, habe ich ja, wie Blacksummer sagen würde, eine so dumme Frage gestellt ;)

Blacksummer
18.07.2009, 20:34
Ja, und weil ich grade in dem Teil der gar nicht so viel mit Spielen zutun hat heimisch bin, habe ich ja, wie Blacksummer sagen würde, eine so dumme Frage gestellt ;)
*Grr* Ich hab' nie behauptet das du eine "dumme" Frage gestellt hast. Ich hab' diese Frage auch schon mal gestellt, na und? ;)

Wie schon erwähnt, du musst dich speziell mit OpenGL oder DirectX beschäftigen und gut damit Umgehen können. Da Nathex und ich beinah' gleich Denken (was gespenstig ist), hat er schon das Wichtigste erwähnt. Bei großen Firmen arbeiten höchstens 1-3 Leute an einem bestimmten Teil vom Spiel, wie z.B. die Physik Engine oder Grafik Engine oder die Netzwerkstruktur etc.

nathex
18.07.2009, 20:37
wie Blacksummer sagen würde, eine so dumme Frage gestellt

Naja es gibt keine dummen Fragen, nur dumme Antworten ;)

Es kommt ganz darauf an, worauf du hinaus willst?
Ob du ein richtig großes Projekt vorhast oder nur ein kleines 2D-3D Spiel?
Zweiteres kannst du einigermaßen schnell alleine Programmieren, wenn du dich in die Materie eingearbeitet hast.
Bei einem großen Projekt, musst du es so machen wie ich gesagt habe: Arbeite dich in einen bestimmten Bereich der Spieleprogrammierung ein (z.b. Engine-Entwicklung, Grafik etc.) und dann schau dass du dir ein Team aufbaust etc.

Ich denke, dass es ein ziemlich weiter Weg bis dahin ist :P


Da Nathex und ich beinah' gleich Denken

That's it! ♥

Invisible1337
18.07.2009, 20:58
Kennt jemand vielleicht eine "gute" Source in C# (oder cpp) womit man 3D texturen (direct 3d (*.x))
anzeigen und ggf. bewegen kann?
Wäre sehr dankbar^^

nathex
18.07.2009, 20:59
Kennt jemand vielleicht eine "gute" Source in C# 8oder cpp) womit man 3D texturen (direct 3d (*.x)) anzeigen und ggf. bewegen kann?
Mach dazu bitte ein eigenes Thema auf, das hat hier nichts zu suchen.

Hiramu
18.07.2009, 21:00
OT:

Tut mir leid aber ich musste mich dabei an das hier errinern:
http://www.gamestar.de/community/gspinboard/showthread.php?t=337502
ZU göttlich :D