Candy Crush Entwicklung

  • Antworten:14
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 144

09.01.2014, 13:15:38 via Website

Hey liebe Community,
nachdem ich euch jetzt ein paar Tage in Ruhe gelassen habe, weil ihr auch mal eine Pause verdient habt, geht es jetzt weiter :grin:
Ich habe dieses Spiel namens Candy Crush im Android App Store gefunden und es einige Tage lang aktiv gespielt...
Was mich natürlich nur interessiert, wie wurde diese App programmiert, mit einer Engine oder hartes Coding?
Welche Engine könnte man für ein 2D? Spiel benutzen, geht auch Unity 3D?
Beim Coding würde ich mich wieder fragen, welches Framework? OpenGL vielleicht? Würde eine SurfaceView, was die Performance angeht auch reichen?


grüße Fabian!

Antworten
  • Forum-Beiträge: 1.793

09.01.2014, 15:11:09 via App

Gab hier schon einige Threads zu...

OpenGL würde ich ohne Engine nicht empfehlen, SurfaveView dürfte für den Anfang reichen.
Kommt aber natürlich auch auf deine Ansprüche an die Grafik an.

Am besten wäre wohl eine Schicht, die sich ums zeichnen kümmert und bei Bedarf gewechselt werden kann.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
  • Forum-Beiträge: 144

09.01.2014, 16:28:11 via Website

Hey impjor,

leider kann ich solche Threads nicht finden, wo sich Entwickler um Candy Crush kümmern :huh:
Für mein Spiel würde eine solche Animation wie aus Candy Crush reichen, deswegen frag ich ja :)
Kann man zwischen verschiedenen Techniken im Spiel wechseln??? Wusste ich noch gar nicht ^^

grüße Fabian!

Antworten
  • Forum-Beiträge: 1.793

09.01.2014, 17:15:53 via App

Threads zu (2D-)Engines, nicht zu Candy Crush (dazu weiß ich leider nichts).

OpenGL/SurfaceView kann man nicht mischen. Wenn du aber die Spiellogik (also das Simulieren/rendern/...) von der Grafik trennst, sollten es nur wenige Codezeilen sein, die du ändern musst um von SurfaceView auf OpenGL umzusteigen.
(Bsp: Thread von SurfaceView ruft bisher Methode Game#draw() auf. Nun portierst du auf OpenGL: Funktion onDrawFrame der GLView ruft Methode Game#drawGame auf).

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
  • Forum-Beiträge: 144

09.01.2014, 21:00:19 via Website

Naja bis ich soweit bin, dauert es wahrscheinlich noch ein paar Wochen bis Monate. Wollte mich nur mal informieren, wie sowas zu programmieren ist. Mein Kumpel sagt immer, ich solle mit einer Engine arbeiten. Da mir das Code aber so gut gefällt und ich mit einer Engine gar nicht umgehen kann, umgeh ich das lieber.
Mir fehlen dazu aber leider noch Java-Kenntnisse und komme derzeit nicht weiter, weil ich nicht weiß, wo ich anfangen soll.

Übrigens , wenn jemand weiß wie Candy Crush geschrieben wurde, bitte trotzdem melden, würde mich freuen :)

grüße Fabian!

Antworten
  • Forum-Beiträge: 48

13.01.2014, 12:33:49 via Website

Eine Engine zu benutzen bedeutet nicht, dass du nichts programmieren musst bzw. kannst.
Je nach Engine hast du verschiedene Tools und Möglichkeiten um viele Räder nicht nochmal neu erfinden zu müssen.
Wie du diese verwendest, bzw. auf welcher Ebene du dann selber einsteigst bleibt in den meisten Fällen dir überlassen.

Zu deiner Frage welche Engine man benutzen könnte:
z.B: Unity, libGdx, AndEngine

Antworten
  • Forum-Beiträge: 144

13.01.2014, 15:32:44 via App

Hey Pascal,
vielen Dank für die Antwort, habe trotzdem noch ein paar Fragen :)
Wie sieht es denn mit Performance-Unterschieden aus? Kann ich mit Unity komplett alles selber machen mit Menüs, Facebook, Funktionen usw. Oder muss ich da selbst eingreifen? Kann man mit Unity z. B auch die Kamera steuern? Könnte man mit Unity Candy Crush entwickeln? Wir siehts mit den Lizenzen aus, kann die App nachher einfach verkauft werden oder muss ich einen Anteil an Unity abgeben?


Grüße Fabian!

— geändert am 14.01.2014, 20:56:30

Antworten
  • Forum-Beiträge: 144

15.01.2014, 12:08:57 via Website

Hat wirklich keiner ne Ahnung davon?

grüße Fabian!

Antworten
  • Forum-Beiträge: 307

15.01.2014, 13:19:52 via App

hi Fabian,
du möchtest doch ein Spiel entwickeln. Also warum gehst du dann nicht mal auf die Seite von Unity, libGdx oder AndEngine und lädst die Engine.
Spiel ein bissel mit rum und stell fest welche für DICH am besten ist. Also so was wie: verstehst bzw. kannst du die Sprache der Engine? Oder wie ausführlich ist die Doku? Gibt es ordentliche Tuts oder sind die alle auf "Hello World" Niveau.

MFG Christian

SvenDD

Antworten
  • Forum-Beiträge: 144

15.01.2014, 18:08:41 via App

Endlich mal eine klare Anweisung :) vielen Dank ;)

Grüße Fabian

Antworten
  • Forum-Beiträge: 144

17.01.2014, 18:19:21 via Website

So, nun habe ich mir mal Unity und Corona angeschaut... Das erste, was mir auffiel ist, dass es keine Möglichkeit gibt in Java z.B die Animationen zu programmieren. Meine bevorzugte Sprache wäre dann also C#, welche Java sehr stark ähnelt, wie ich finde. Zweitens ist Unity wirklich sehr kompliziert und für 2D Games wohl eher ungeeignet. Was ich bei den Engines etwas "scheiße" finde, ist, dass ich wohl mein ganzes Einkommen wieder für die Engine ausgeben muss, so, dass ich nicht wirklich was verdienen werde...
Dazu kommt, dass ich nicht wirklich den Grund verstehe, eine Engine zu nutzen, alles was mir abgenommen wird ist doch bei Android das SurfaceView bzw. OpenGL Grundgerüst oder etwa nicht? Wenn ich eine SurfaceView mit funktionierendem Grundgerüst habe, ist die Engine doch schon fertig? Die Animationen usw. kann ich doch per XML schreiben? Wie sieht es bei Explosionen aus, ganz viele Frames hintereinander oder auch per XML bzw.Java?

Passend zu dem Thema-Titel, habe ich bei Google mal nach "Unity Candy Crush" gesucht und keins von denen kommt an das Candy Crush von King heran, woran liegt das? Liegt es daran, dass es eine Firma mit vielen professionellen C++ Entwicklern ist oder kann man die feinsten Details, die es in Candy Crush gibt nicht mit Unity entwickeln?

Bei Corona musste ich feststellen, dass ich gar keine Oberfläche habe, nur reinsten LUA Code, was ich nicht so prickelnd finde. Außerdem muss ich für die Pro Version mal eben 50 Euro im Monat hinblättern :(

Wenn sich einer die Mühe macht, meine Fragen zu beantworten, wäre ich sehr dankbar, gerne auch per Skype oder sonstigem Messanger. Würde für eine Beratung auch bezahlen ;)
Es geht mir einfach darum, genau zu wissen, wo die Unterschiede liegen und wie ich mit einem 2 Mann Team aus Desginer und Programmierer(ich) das beste Resultat hinlegen kann.

Bitte seid nicht sauer über meine Fragen, ich kann aus persönlichen Antworten am besten lernen...

grüße Fabian!

Antworten
  • Forum-Beiträge: 1.793

17.01.2014, 19:07:59 via App

Na, das sind viele Fragen. :)

Also, es gibt Engines, die kosten etwas und es gibt solche, die kostenlos sind. (und keineswegs schlechter, mMn sogar besser, wenn sie OpenSource sind, da jeder patches einreichen kann.)

Android Apps werden in Java geschrieben. Punkt. Nun kann es natürlich sein, dass die Engine ein Frontend bietet, und intern deinen Code in Java/C++-Code umwandelt. C(++)-Code bietet sich bei zeitkritischen, rechenintensiven Operationen an (wie es ein Spiel nun einmal an sich hat), kann aber kein Java ersetzen.

Wenn du glaubst eine Engine würde dir nur OpenGL/SurfaceView abnehmen, ist das falsch. Erstens, klingt das "nur" so, als könntest du den selben Code auch in einer Woche schreiben. Glaub mir, nicht umsonst sind solche Engines eigenständige Projekte.
Zudem bieten viele Engines noch mehr an: LibGDX z.B. nimmt dir auch InputHandling, Audio, u.v.m. ab, und bietet die Möglichkeit alles auch unter iOs, HTML5, und Java-Desktop zum laufen zu bringen.

Also, nochmals die Empfehlung: Besser keine eigene Engine schreiben. Kosten sind kein Argument, LibGDX, AndEngine sind OpenSource und kostenlos.

Warum du unter Google zu Candy Crush Entwicklung nichts findest, wird wahrscheinlich daran liegen, dass die Entwickler schlicht nichts preisgeben. Wozu auch? Bringt ja kein Geld.

Übrigens, würde ich sagen, dass gerade Candy Crush wohl eher nicht so Grafiklastig ist, man denke da nur an 3D-Spiele...


Animationen kannst du wohl nicht in xml schreiben, wie stellst du dir das vor? Beispiel, eine Münze soll sich drehen: Du musst wohl für jeden Status des "Drehens" ein eigenes Bild erstellen und nacheinander anzeigen.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
  • Forum-Beiträge: 144

17.01.2014, 19:42:13 via Website

Hey impjor,

erst einmal vielen Dank, dass du dir das nochmal antust :D
Okay, dass mit den Engines hab ich nun verstanden. Zu Candy Crush:
1. Könnte man angenommen, man will es nach programmieren GENAU das GLEICHE Spiel mit einer Engine programmieren oder sind die Details zu fein?
2. Performance mäßig sieht man bei solchen kleines Games den Unterschied zwischen Engine und hard coding nicht oder?
3. Glaubst du, King hat ihre eigene Engine oder nutzen die evtl. auch andere Engines?

grüße Fabian!

Antworten
  • Forum-Beiträge: 1.793

17.01.2014, 23:48:33 via App

1. Nachprogrammieren wird schwer, wenn du deren Quelltext nicht kennst oder irgendwelche Anhaltspunkte hast, wie sie das gemacht haben.
Das Spiel selbst (Grafik, Gameplay, etc.) ist natürlich immer nachmachbar, aber das gillt ja bei jeder App.

2. Ob man performance Unterschiede bei einem CC ähnlichen Spiel sieht liegt wohl an dem Handy und an der Auflösung der Grafiken, Qualität der Audios usw. Deine selbstgecoded Engine wäre aber wahrscheinlich eher langsamer als eine professionelle gecodete.

3. Das kann ich wirklich nicht beantworten. :) Kann beides möglich sein.
Manche Engines kosten ja schon einiges, also wird es wohl auch professionelle Käufer/Nutzer geben.
Man muss sich immer fragen, wo man ansetzen will. Nutzt du keine Engine sondern pures OpenGL, nutzt im Prinzip ja auch Bibliotheken/eine Engine, die du hättest selber schreiben können (theoretisch gesehen).

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten

Empfohlene Artikel