# MiniCraft - selbst nach Programmieren



## the0MIKE (9. Okt 2012)

Hi Jungs und Mädls ,

ich weiß es ist nicht einfach ein Spiel auf die Beine zu stellen. 
Mann muss kentnisse etc. haben.

Java allgemein habe ich schon einiges gemacht, also nichts neues für mich.

Nur kann ich mir nur sehr schwer vorstellen wie ich sowas wie zum Beispiel "MiniCraft" programmiert.

Das spiel war damals für einen Wettweberb, weiß die anforderungen gerade nicht. 
Aber zu meiner tatsächlichen Frage, gibt es gute Tutorials (im Internet) die einem einen schnellen und guten eindruck geben, was für vorraussetzungen ein Spiel hat/braucht, und wie man es Performant halten kann?

Habe da leider nichts gefunden. Sowas wie Pong würde ja schon reichen um die Logik zu verstehen 

Vielen Dank für die Hilfe.

Gruß,
Mike


----------



## Spewer (9. Okt 2012)

Vllt hilft das  ? 

http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html

Edit: Hab selber noch nie damit gearbeitet, also weiß ich nicht ob deine Anforderungen damit erfüllt werden.


----------



## the0MIKE (9. Okt 2012)

Hey Spewer,

danke für die schnelle Antwort.

Schaut aufjedenfall gut aus 

Mal so ne allgemeine Frage wegen der Grafiken, gibt es da zufällig fertige Grafik-Packs, mit denen man z.B ein RPG erstellen kann?
Weil das ja doch ne Arbeit ist die Grafiken zu erstellen. Also als art Libary 

Gruß,
Mike


----------



## Spewer (9. Okt 2012)

Vielleicht sowas hier : 

Welcome to OpenGameArt.org | OpenGameArt.org


----------



## Fu3L (9. Okt 2012)

MiniCraft war für einen Wettbewerb names Ludum Dare, in dem man innerhalb von 48 stunden ein Spiel schreibt. Macht sehr viel Freude, aber ist auch entsprechend anstrengend 

Hier ist ein Link zu Grafik- und Soundressourcen:
Welcome to OpenGameArt.org | OpenGameArt.org

Wenn du 8bit-sounds brauchst, siehe hier: DrPetter's homepage - sfxr

Zu langsam^^ ;(


----------



## the0MIKE (9. Okt 2012)

Ach cool Danke für die Links.

Ja genau den Wettbewerb mein ich :applaus:
Kann mir vorstellen wie Anstrengend ^^

Hab mir grad n kleines PHP Script geschrieben, um meine Filme zu verwalten, finden etc. 
Deswegen hat es mich gepackt wegen Java Spiel. Hatte ich schon mal vor einiger Zeit vor, leider hat mir da die Zeit und Muse gefehlt.

Sollte jemals ein Ergebniss zu stande kommen, poste ich dies gerne 

Bin grad schon an dem Tutorial dran, mal schauen wie es sich entwickelt.

Grüße,
Mike


----------



## Voxel (9. Okt 2012)

Wenn es dir um Minecraft geht:
Let's Make a Voxel EngineSo schwer ist das übrigens gar nicht, doch solltest du bedenken, das ein kleines Delta zwischen Minecraft und Pong besteht.

Voxel


----------



## the0MIKE (9. Okt 2012)

Hi Voxel,

vielen Dank, dachte das wäre entschieden schwerer 

Nun das da ein "kleines Delta" zwischen liegt ist mir klar ^^
Ich mein nichts geht über diese HD optic des besten spieles, Pong 

Nun ging um den Einstieg --> Logik, Technik etc.

Aber danke dir werd ich mir anschauen.

Lg,
Mike


----------



## c_sidi90 (9. Okt 2012)

Such bei Youtube mal nach TheCherno oder TheCodingUniverse, beide haben eine Tutorialserie um einen Minecraft Clone in 3D zu programmieren. The Cherno arbeitet mit nativem Java ohne OpenGL implementierung (sehr cool), der andere mit LWJGL (bessere performance).


----------



## the0MIKE (9. Okt 2012)

Hi,

danke für so viel resonanz 

Mache jetzt mal das "Quaxli 2D Spiele" Tutorial durch, find es schon von am Anfang sehr gut.
Und werde mich dann weiter reinfuchsen 

Weil es so scheint, ich bin nicht so auf MineCraft, festgefahren. war ja auch "Min"i"Craft 

Dachte an so etwas wie Zwergenweitwurf

Für den Anfang zumindest bleib ich wohl bei 2D spielen.

Aber das mit den Minecraft tut´s hat potenzial für mich, wohl aber erst nach den 2D 

Lg, 
Mike


----------



## Network (9. Okt 2012)

OpenGL ist nebenbei generell zu empfehlen (Wird nicht in Quaxlis-Tut verwendet), so spart man sich den ganzen Codeteil für die drehung der Bilder etc....

Größenveränderungen, Verformungen, Drehungen um die eigene Achse oder dergleichen müsste ansonsten in einem langen Startprozess und viel Speicheraufwand für die entsprechenden Bilder erst berechnet werden.
Selbstverständlich funktioniert OpenGL auch in 2D. Nachteil ist, dass es etwas gewöhnungsbedürftig ist auf der einen Seite und schon kompliziert werden kann auf der anderen aber spart man sich wie gesagt den ganzen Transformcode für die Bilder und das ist auch nicht gerade einfach.

Gruß
Net


----------



## the0MIKE (9. Okt 2012)

Vielen Dank,

Werd ich mir zu Herzen nehmen.

Mal so blöd gefragt wegen "Engin" 

Die Engin gibt doch an wie sich ein Objekt verhält o.ä. 
Heißt das ich könnte mir eine "Engin" schreiben in der ich das Verhalten für bestimmte Objekte angeben kann?

Also anders gesagt wenn ich mir eine Klasse baue, (OO wollen doch schön dem Standart folgen) zählt das schon als 
Engin, oder was ist in einer Engin allse enthalten, und kann man die vorgefertigt verwenden?

Wenn man ja z.B. von der Unreal Engin ausgeht, wird diese ja für viele spiele verwendet.

Lg,
Mike


----------



## Network (9. Okt 2012)

Was alles als Engine bezeichnet wird, dass lass mal die Germanistiker entscheiden  Nein im ernst, schau dir in Wikipedia das Wort Engine an, dann weisst du wann man in etwa von einer Engine spricht.

Engines sind dafür da um sie vorgefertigt zu verwenden, dass ist der Sinn warum man sie entwickelt. Im Grunde sind es Codeteile die sozusagen universell sind ohne ins Detail zu gehen, aber bereits spezifische Aufgaben erfüllen können.
Du kannst zum Beispiel eine Physics-Engine schreiben, die für alle Objekte die Schwerkraft berechnet, damit die auch schön und möglichst richtig hinfallen. Dieser Codeteil findet dann ganz bestimmt auch für andere Projekte seinen Nutzen sofern er anpassbar genug ist.
Oder eine Anzeige die speziell gleich mal mit Shadern daher kommt. Dann muss man nicht für jedes Projekt einen neuen Shader schreiben.

Ein gutes Beispiel wäre wohl die JMonkey Engine.

Gruß
Net


----------



## the0MIKE (9. Okt 2012)

Hi Network,

ok gut.
Dann war das ja eigentlich genau wie ich meinte (leider kamm es nicht ganz so aus meiner hirnkruste^^)
Aber super dann hab ich ja jetzt schon einiges um mich da ans werk zu machen 

Als letzte frage (ich weiß falsches Forum Falsche Sprache) aber vieleicht hat es ja schonmal jemand gemacht.
Die logik, die ich hier verwende und wie ein spiel aufgebaut wird/ist bleibt die bei z.b einem spiel für das Iphone gleich?
Also klar eigene sprache andere spezifikationen etc. aber grundsetzlich sollte man es meistern in egal welcher sprache wenn man
die grundkenntnisse versteht und anwenden kann oder?
Schon jemand eins gemacht? geht das mittlerweile auf pc oder ist immer noch mac vorrausgesetzt?
(bitte nur antworten wenn es darauf eine antwort ist und wenn ihr bock habt ^^)

So nun schluss sonst kommen die armen helfer ja nie aus der puste 

schöne grüße und vielen dank,
Mike


----------



## Network (9. Okt 2012)

Das Prinzip bleibt immer das selbe. Egal ob IPhone, Android oder PC oder sonst ein System.

Selbst habe ich auf IPhone 1 und auf Android 2 Spiele entwickelt und die Herangehensweise und Umsetzung unterscheidet sich "im Prinzip" nicht von dem was in Quaxlis Tutorial steht.
Aber vom Code natürlich schon ein Stück, nicht alles ist in jeder Sprache gleich umsetzbar, aber das ist ja klar. 

Gruß
Net


----------



## the0MIKE (9. Okt 2012)

Ok Super 

Dann nochmal danke und schönen Abend

Lg,
Mike


----------



## Titanpharao (9. Okt 2012)

Man sollte immer noch einen Mac benötigen, wenn du nicht ohne größere Probleme daran arbeiten willst.


----------



## the0MIKE (9. Okt 2012)

@Titanpharao 
ok dachte ich mir  

@all

hab jetzt die hälfte des Tutorials (kann meinen Heli schon steuern ^^) und klar keine Übung darin und noch nie in Java so komplexe dinge geschrieben aber mal gaaaanz ehrlich...

Das kann sich doch keine Sau so merken, das er es ohne vorlage nachmachen oder sogar erweitern kann??!! 

Sagt mir bitte nur das auch wohl Erfahrene (also keine Spiele-Entwickler^^) auch sich vorlagen zu hand nehmen müssen.
Fühle mich ja sonst wie n trottel x)

Thx,
Mike


----------



## BRoll (9. Okt 2012)

Alles eine Sache der Übung und Erfahrung.

Wenn du einmal was programmierst dann weiß man es 
im Normalfall für die nächsten Projekte immer noch.
Dh. gewisse Stellen kann man doppelt nutzen,
aber meistens programmiert man schon von Grund an neu,
da lernt man auf jeden Fall am meisten.

Das bringt dann auch die Übung, wenn du vorher noch kein Spiel programmiert hast
kommt man sich nur vor wie ein Trottel. 
Kommt drauf an wo man seinen Maßstab setzt.

Wir sind alle irgendwo Trottel, egal wie viel wir wissen 

Weiß jetzt auch nicht was du genau dir nicht merken kannst davon.
Sollst es ja auch nicht einfach kopieren, sondern selber machen 

mfg BRoll


----------



## the0MIKE (9. Okt 2012)

Ja klar 

Ich merke es ja bei PHP z.B. am Anfang, eig. jede Funktion nachschauen müssen und hier und da.
Nun sind es nur noch komplett neue Sachen die ich nachschlagen muss.

Mann fühlt sich halt nur so erschlagen im ersten Moment, aber das wird noch 

Lg,
Mike


----------



## Network (9. Okt 2012)

Ich sags mal so: Quaxlis Tutorial ist dafür ausgelegt um Leuten zu zeigen wie in etwa die Architektur eines Spiels aussieht und wo OOP seine Anwendung findet.

Die einzigen Sachen die man sich merken muss und in Quaxlis Tutorial überliefert werden sollen:
1. *Keine* JLabels oder sonstige Swingkomponenten und was es noch so gibt verwenden
-> Direkt auf einen Untergrund alles zeichnen

2. Die Programmarchitektur
-> Eine Spielschleife steuert alles! Erst alle Objekte berechnen, dann alle Objekte zeichnen, das ganze wiederholen in die Unendlichkeit.
(Du musst dir nichtmal die Schleife selbst direkt merken, nur ca. den Aufbau. Die Schleife aus Quaxlis-Tutorial ist sehr unperformant und wird eher selten in größeren Projekten verwendet.
Der Sinn dahinter bleibt aber immer derselbe: Irgendwie einen flüssigen Ablauf schaffen (Nicht mal schneller mal langsamer je nach Computerleistung))

3. OOP in der Spieleprogrammierung
-> Bspw. ein Strategiespiel hat Luft-, Land- und Seeeinheiten. Alle können sich bewegen, angreifen etc.... der einzige Unterschied ist, dass die einen sich an nur an Land, die anderen nur zu Wasser und die letzten überall sich bewegen können.
Jetzt müsste man in der Spielschleife theoretisch jedesmal 3 Listen durchgehen um alle 3 Objekttypen zu berechnen, dank richtiger Anwendung von OOP kann man ALLE Objekte in eine Liste stecken.
Das ist nur eins von unzähligen Beispielen.

Das sind so in etwa die 3 Topics die man aus der Anleitung mitnehmen sollte.
Soviel ist das dann garnicht.

Gruß
Net

PS: Wie gesagt: Übung macht den Meister! Als ich mit der Spieleprogrammierung anfing, wusst ich auch noch nicht wo hinten und vorne ist, nach der Zeit findet man jedoch heraus auf welche Dinge es ankommt und schwups entwickelt man auch schon eigene Ansätze für seine eigene Spielarchitektur.


----------



## Fu3L (10. Okt 2012)

Bevor nun der Eindruck sich einbrennt, dass Blockwelten einfacher seien als andere Spiele, möchte ich kurz erläutern, warum das nicht der Fall ist:
Ein "normales" Spiel kann normalerweise auf viel bereits geleistete Arbeit zurückgreifen, zB in Form der umfangreichen Editoren von Unity, Unreal und Cry Engine (und immer besser auch dem Editor der JMonkeyEngine). Für Voxelwelten muss man derzeit noch sehr viel selbst machen.
Warum macht man sich dann überhaupt die Arbeit? Voxelwelten haben meist bessere Möglichkeiten beim Generieren, insbesondere, wenn die Welt 3Dimensional sein soll. Also mit Überhängen und Tunneln und allem drum und dran, am besten noch prozedural generiert. Da haben Voxelwelten Vorteile. (Und hier Betonung auf Voxel: Es muss am Ende nicht unbedingt ein Block raus kommen, sondern es kann auch glattes Terrain entstehen, man unterteilt nur beim Generieren/Platzieren und co die Welt in Blöcke)


----------



## the0MIKE (10. Okt 2012)

Verstehe, kommt natürlich dann immer darauf an, was man tatsächlich vorhat.

Wie gesagt werde das Tut mal fertig machen, und mir dann die Gliederung der Schritte rausschreiben ( also wirklich nur grob: Panel erstellen, Initalisierungs-Methode erstellen.. etc.) damit ich mich an der reihenfolge orientieren kann. 
Und dann eben ein 2D clon ala "Zwergenweitwurf" machen.

Und wenn ich das mal verinnerlicht habe, werd ich mich vieleicht an 3D ranwagen. 

So ne frage an die erfahreren Spiele Programmierer, wenn ihr euch an ein neues Spiel setzt, wie geht ihr ungefähr schritt für schritt  vor?
Soll heißen macht ihr euch nen Plan vom spiel auf Papier was es später machen kann/soll oder fangt ihr einfach wild drauf an?

Mir geht es nur darum eine Struktur rein zubekommen 

Thx,
Mike


----------



## Apo (10. Okt 2012)

Oh die Konzeptionsphase. 

In der stecke ich auch grad mal wieder und ich versuche zum ersten Mal wirklich Papier und Stift zu verwenden bzw. ein Dokument zu erstellen, wo alles reinkommt UND was ich pflegen möchte. Ein lebendiges Dokument sozusagen.
Warum hat das einen Vorteil? Naja man macht sich viel mehr Gedanken und hinterfragt viel mehr, als wenn man gleich anfängt. Strukturen werden schneller klar und generell der Codeaufbau sollte sich dadurch verbessern. Aber das kann ich erst später genau bestätigen oder nicht.

Bis jetzt hatte ich eine Idee und habe sie in meinem Kopf reifen lassen, ohne etwas aufzuschrieben und habe dann begonnen zu programmieren. Für kleinere bisvielleicht noch mittlere Projekt ein probates Vorgehen, weil man schnell ein Ergebnis hat. Und jeder sollte wissen, wie wichtig das für die Motivation sein kann.


----------



## the0MIKE (10. Okt 2012)

ja stundenlang an etwas zu schreiben ohne wirkliches ergebniss ist doch recht dämpfend ...

Naja werd ich ja sehen wie es mir liegt, glaub da wird jeder seine mehr oder weniger eigene technik haben


----------



## Firephoenix (10. Okt 2012)

Gut für den Start waren bei mir Use-Cases. Dabei macht man sich automatisch Gedanken darüber welche Features man benötigt und wie sich das Spiel für den Anwender anfühlen soll.
Meistens merkt man dann auch recht schnell welche Anforderung wie schwer umzusetzen sein wird.

Wenn man alleine arbeitet und schon eine gute Vorstellung davon hat was man produzieren will kann man natürlich auch direkt loslegen mit dem Code, aber ein paar Notizen wo man nachschauen kann was man sich eigentlich mal dabei gedacht hat schaden nicht.

Gruß


----------

