Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.12.2013, 14:37

Bitte um Einschätzung zu Arbeitsaufwand von C++-Experten

Hallo,

Erstmal eine kleine Beschreibung meiner Situation: ich habe Maschinenbau auf Diplom studiert und daher ein gutes Fundament an generellem mathematischen Wissen. Programmierung haben wir teilweise auch behandelt, aber nicht C++ oder C oder C#. Was C++ angeht, müsste ich also quasi bei Null anfangen. Allgemein habe ich aber die Denkensweise eines Programmierers vom Prinzip her schon verinnerlicht, würde ich sagen.

Ich habe mehrere Fragen:

Ist dieses Buch:
http://www.amazon.de/C-f%C3%BCr-Spielepr…ren+mit+C%2B%2B
(für das es ja auch eine Support-Ecke im Forum gibt glaube ich) geeignet, um mit C++ zu beginnen? Wie gesagt: Ich benötige auch absolute Basics in C++. Auch weiß ich beim Spiele programmieren zum Beispiel nicht einmal genau was eine Engine im Detail macht. Gibt es andere Bücher zu empfehlen, die vllt schon früher ansetzen?

Nehmen wir an, ich würde ein online RPG machen wollen, jedoch ein kleines. Für die Leute, die zufällig WOW kennen: Die gesamte Spielwelt braucht nur etwa so groß zu sein wie der "Wald von Elwynn" (das Startgebiet der Menschen). Es soll einige Mobs geben und vielleicht einen Endboss. Gespielt wird es vielleicht im Bekanntenkreis von insgesamt 20 Leuten. Ich weiß, ein Server kostet Geld, habe gelesen 30 bis 90 Euro im Monat. Da ich im Januar als Doktorand anfange, wäre es kein Problem für mich das zu bezahlen.

Nehmen wir an, ich sitze hin und wieder unter der Woche nach der Arbeit 2-3 Stunden daran und am Wochenende länger. Gelegentlich einen ganzen Samstag von morgens bis abends. Befindet sich das in einem realistischen Bereich? oder ist das eine unmenschliche Menge an Arbeit?

Welche Programme benötige ich noch und mit welcher finanziellen Investition müsste ich rechnen? Ich bräuchte vermutlich irgendein 3D-Modellierer-Programm zusätzlich, oder? Photoshop habe ich und kenne mich sehr gut damit aus, da ich schon viel damit gemacht habe. Ich denke man kann Texturen damit machen.

Es wäre sehr nett, wenn sich jemand, der sich gut mit Spiele Programmierung in C++ auskennt, eine Einschätzung dazu abgeben könnte. Danke vorab!

Viele Grüße

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

2

20.12.2013, 14:42

Wenn du jetzt noch die Basics lernen musst, dann ist das ziemlich unrealistisch. Bin zwar kein Experte aber auch ich weiß schon, dass das viel zu viel ist für einen Neuling!
WIP Website: kevinheese.de

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

20.12.2013, 14:55

Mach es vielleicht in 2D und nimm eine Einsteiger freundlichere Sprache (C#, Java) und dann könnte es klappen.
Wenn du schon eine kannst nimm die (sofern möglich).

Asbestbrezel

Frischling

Beiträge: 41

Wohnort: Solingen

  • Private Nachricht senden

4

20.12.2013, 16:58

Bin zwar kein C++ experte, aber ich hab das Buch gelesen. Im Grunde ist es ein echt gutes Buch, beschreibt afaik alle Basics recht gut und halt immer in dem Bezug zur Spieleprogrammierung. Aber ich glaube, ich würde es heute nicht mehr empfehlen, weil Singletons und veraltetes C++ benutzt werden.

Also ich find schon, dass es sich lohnt C++ zu lernen, auch als nicht-Informatiker, aber du solltest deine Erwartungen runter schrauben. Versuch die Basics zu verstehen und zu verinnerlichen, dann kannste dich an ein kleines Spiel wagen, irgendwat mit 2D. Der xte Pong-Klon oder sowas :)

Zum Beispiel, das kleine Spiel, was im letzten Kapitel des Buches beschrieben wird. Ich würde sagen bei 2,3 h am Tag aufmerksamer Lektüre und lösen der Aufgabenstellungen, solltest du innnerhalb von 3 - 4 Wochen verstanden haben, wie es funktioniert.

5

20.12.2013, 17:38

Naja, C++ ist halt schon irgendwo eine Profi Sprache, bei der man viele Details kennen muss, um nicht irgendwelche "ganz furchtbaren" Fehler zu machen. Es wird auf jeden Fall eine Menge Zeit brauchen. Und die ersten paar Projekte wird man vergessen können, einfach weil man viel Erfahrung braucht, um vernünftigen Code schreiben zu können. Und das gilt für C++ ganz besonders, weil es eben eine komplexe und umfangreiche Sprache ist.

Zur Umsetzbarkeit: Die Frage ist, wie sehr du dich einschränken kannst. Und natürlich ein wenig, welche Bibliotheken du benutzten willst, bzw. welche Komponenten (Rendern, Physik, Sound, Netzwerk...) du selber schreiben willst. Und natürlich brauchen Details immer die meiste Zeit (20:80 Regel), einfach nur irgendwie rumlaufen und zuschlagen können, ist nicht soo schwer, aber man wird halt einen deutlichen Unterschied zu komplett aufpolierten Spielen merken.

Zum Modellieren könntest du beispielsweise Blender benutzen, das ist ein sehr gutes Open-Source Tool. Aber es braucht natürlich auch wieder eine Menge Zeit um derartige Tools wirklich zu beherrschen. Aber vielleicht findest du ja jemanden, der dir bei deinen Grafiken helfen kann.

Die Frage ist jetzt halt ein wenig, was genau du willst. Wenn du dich generell langfristig mit Spieleprogrammierung beschäftigen willst, und auch die Hintergründe kennen lernen und umsetzen möchtest, ist C++ sicherlich eine gute Wahl. Man kann es natürlich einfacher haben, aber das hängt halt davon ab, was genau man machen möchte.
Mit genug Ehrgeiz und Vorwissen (es hört sich an, als könntest du beides haben), wirst du vermutlich schon relativ zügig etwas in C++ zustande bringen, geh aber nicht davon aus, dass du irgendetwas, das du im ersten Jahr fabrizierst, später noch einmal ansehen möchtest.
Lieber dumm fragen, als dumm bleiben!

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

20.12.2013, 20:23

Dein Ziel ist ja in erster Linie erst mal das Spiel zu bauen. Ich würde dir da auch von C++ abraten. Damit machst du dir zu viel arbeit. Das Projekt was du umsetzen willst ist schon ziemlich umfangreich. Netzwerkprogrammierung ist wirklich nicht leicht und bei Echtzeitspielen gibt es schon eine Menge zu tun.
Die Hero Engine ist extra auf MMOs ausgelegt und soweit ich weiß kannst du da unter anderem auch direkt Server hosten. Ich selbst habe damit aber keine Erfahrung gesammelt.
Ansonsten werfe ich mal Unity in den Raum. Unity ist eine gute Engine mit der du wunderbar 3D Anwendungen erstellen kannst. Dir wird ne Menge schon fertig geliefert und was es nicht fertig gibt kannst du dir selbst schreiben oder per Plugin nachträglich einbinden. In Unity selbst kannst du deine Spielwelt schön gestalten, was dir ne Menge Aufwand abnimmt. Entwickeln kannst du das ganze in verschiedenen Sprachen. Möglich sind C#, UnityScript (oft falsch benannt als JavaScript), Boo und per nachträglicher Einbindung gehts auch mit anderen Sprachen. So kenne ich zum Beispiel Leute die mit UScript arbeiten. Ich persönlich würde dabei zu C# raten, aber das ist Geschmackssache.
Wenn du dich für eine Sprache und eine Engine entschieden hast ist es erst mal wichtig dich langsam an dein Ziel heran zu tasten. Zum Beispiel kannst du erst mal versuchen einen Würfel über eine Fläche zu bewegen. Dann baust du Kollisionserkennung mit ein. Dann vielleicht ein wenig Physik. Dann immer ein wenig mehr. Dann irgendwann ein animiertes Modell und so weiter. Versuch vielleicht erst mal einen Prototypen ohne Netzwerkfunktionalität zu schreiben. Das sollte ein wenig einfacher sein.
Was die Netzwerkprogrammierung angeht. Solltest du da klassisch mit einer Netzwerkengine oder vergleichbarem arbeiten (also nichts was direkt auf MMO Games ausgelegt ist), dann abreite dich auch da langsam voran. Fang mit einem einfachen Chat für 2 Leute an. Dann ein Chat für beliebig viele Leute. Dann eine Anwendung bei der Figuren bewegt werden und so weiter. Auch hier lieber langsam ans Ziel heran tasten.
Das sind zumindest meine Tipps für dein Vorhaben.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

25.12.2013, 17:33

Danke für die Antworten!

Mehrfach wurde ja schon C# erwähnt. Ich habe mal gelesen, dass C++ besser sein soll, da man "freier" programmieren kann und komplexe Projekte damit besser beherrschbar sind. Aber dieser Vorteil spielt sich wahrscheinlich erst aus, wenn man einen Grad an Professionalität und Komplexität eines Spiels erreicht, an den man als Privatmann eh nicht herankommt.
Von daher werde ich mich, wenn es so viel einsteigerfreundlicher ist, in naher Zukunft dann eher an C# versuchen, danke dür die Tips.

Die Hero Engine wurde auch mehrfach angesprochen. Ich hätte mal eine Frage generell zu einer Engine:
Es gibt zum Beispiel unterschiedliche Arten der "Beschleunigung" beim Laufen der Figuren. Manche Spiele haben bei der Bewegung ihrer Figuren zwischen dem Zustand "Stehen" und dem Zustand "Laufen" eine kurze Übergangphase, in der die Geschwindigkeit ansteigt von Null auf die entsprechende Laufgeschwindigkeit. Bei "Age of Conan" war das meiner Erinnerung nach so. Bei "WOW" beispielsweise gibt es nur zwei Zustände: Geschwindigkeit: Null und Geschwindigkeit: Laufgeschwindigkeit. Drücke ich auf "W", so bewegt sich die Figure aus dem Stand sofort ohne Übergangsphase mit der Laufgeschwindigkeit fort.
Eine andere Sache ist das Springen. Bei manchen Spielen verändert sich die Horizontalgeschwindigkeit beim Springen; sie reduziert sich. Ich habe das mal in "SWTOR" mit einem Kumpel getestet: Wir sind auf gleicher Höhe mit identischer Geschwindigkeit nebeneinander hergelaufen, und dann bin ich gesprungen. Während des Sprungs bin ich etwas langsamer geworden und hatte nach dem Sprung einen kleinen Rückstand gegenüber meinem Kumpel, als wir weitergelaufen sind. Wiederum in "WOW" ist es so, dass sich Horizontal- und Vertikalgeschwindigkeit nach dem Superpositionsprinzip überlagern ohne sich zu beeinflussen.

Meine Frage ist: Sind das Eigenschaften der Engine oder ist das auch bei gegebener Engine veränderbar, indem man die entsprechenden Parameter anpasst?

Und was die Engines wie Hero oder die erwähnte Unity betrifft...
Bei Wikipedia steht: "HeroCloud is a version of HeroEngine that is available for $99 per year,
under the license that they receive 30% the money sales of any game
made with it. It includes everything that a license to the HeroEngine
has, except for access to the source code"
Werden diese 99 $ in jedem Falle fällig? Oder kann ich, sofern ich die Engine NICHT kommerziell, nur privat nutze, auch diese Engines frei benutzen?

Danke nochmal und angenehme Feiertage, viele Grüße!

8

25.12.2013, 18:33

Hi, Bei Engines kann ich dir nich weiterhelfen - aber zum Thema, dass du bei 0 anfangen müsstest, gibts n schönes buch zum Einstieg für C#, was ich super find: http://openbook.galileocomputing.de/visu…86-32e7ca1478d7 gratis oder man kann sichs sonst glaub auch kaufen, wenn mans lieber in buchform hat.

Unity zumindest hat auch ne komplett gratis lizenz. aber zur HeroEngine nach der du gefragt hast kann ich dir leider garnix sagen.


http://unity3d.com/unity/download

Zitat

The free version of Unity for Windows. Includes publishing support for
iOS, Android, Windows Store, Windows Phone, BlackBerry, desktop and Web,
and a 30 day trial of Unity Pro (with Pro publishing for iOS, Android,
Windows Store, Windows Phone and BlackBerry).

9

25.12.2013, 18:52

Meine Frage ist: Sind das Eigenschaften der Engine oder ist das auch bei gegebener Engine veränderbar, indem man die entsprechenden Parameter anpasst?


Nun, in der Regel sollte bei jeder kompletten Engine ein "Player-Handler" dabei sein, der dann genau solche Dinge festlegt. Allerdings sollte man den bei jeder vernünftigen auch durch einen eigenen ersetzen können, bei dem man dann machen kann, was man möchte.
Lieber dumm fragen, als dumm bleiben!

10

06.01.2014, 13:29

Danke nochmal, insbesondere auch für den Link zum C#-Buch!

Viele Grüße

Werbeanzeige