We created the game Magic Beans during the jam. From a small magic bean grows a beanstalk. To keep it growing it must get its branches into light to let them bloom. If the blossoms don’t bloom the beanstalk will die. The player has to navigate two branches at the same time into the light spots.
The team for this jam was rapidly formed and pretty alternative. Additionally to Stefan and me (Torsten) we had our friends Monika, Marcelle and Friedrich with us. None of them have ever programmed or designed a game, but this only makes it more interesting. Monika was creating the graphic and sound assets while everyone else programmed and coordinated the issues. Friedrich and Marcelle are both web developers and familiar with javascript like we. Therefore we chose Cocos2d-JS as our coding framework. It’s also a good prototyping framework and made it easy to generate a browser compatible version of the game.
The core mechanic are the growing branches which always grow towards the upper right corner. While pushing a button the growing direction of the branch is bend towards the upper left corner. Pushing and releasing the button makes the branch grow as a wave while the player aims for the light spots. If a light spot is reached the branch blooms and a new one grows out of the beanstalk. As always we had lots of ideas in our heads but lets start with the ones that got implemented.
All graphics except for the branches are handmade. The challenge with the beanstalk was to divide it into pieces that could be put randomly above each other to simulate the growing. The first and final approach was to divide it into parts of equal length and ensure the beanstalk starts and ends in the exact center of the image. The branches then grow out of those connection points.
The blooming is the only animation in the game that is handmade. It was important for us to have an animation for the blossoms because it’s the main goal. It should feel somehow rewarding to reach it.
The background music is calming and soothing intentionally. The game should challenge and relax you at the same time. We had no one with sound editing experience on the team so we picked the sounds from an open source sound database. Although we had to modify the files a bit. As no one had that much experience or tools for sound editing it was pretty funny and chaotic to get them right.
One field where we had more experience aboard is particle effects. When a new branch starts to grow a green splash bursts out of the beanstalk. Luckily we had used effects in former projects with Cocos2d-c++ version. Plus we already had particle designer, a great tool for creating the effects. It offers a library of user contributed presets. Those are usually a great starting point for your idea.
With all this done we had our core game mechanic running. At this point the jam was running for 1,5 days. Still 1,5 days left. Instead of adding more features right now we decided to create a menu first. If we want people to play the game we need a proper start screen and brief gameplay explanation. A simple start screen and menu is made fairly easy but improves your game dramatically.
By the time we finished the start screen we had 1 day left for the jam. It’s time to balance and polish what we have! Yes, really, although we neither have a progress counter nor a definitive game goal implemented. A working core mechanic which the player understands is worth more than any progress counter. Because people won’t reach any points if they don’t get the mechanic right. For us this meant balancing the growing speed of the beanstalk and it’s branches and adjusting the bend angles for the branches. Getting all this right was quite time consuming. It took almost all of the remaining time. The last minutes were spent to actually commit the entry to ludumdare, write a small explanation and host the game public accessible on our servers.
Making a game in 72 hours is lots of fun. It requires a highly iterative project management style. As I mentioned previously it’s important to have all aspects of a video game covered, i.e fun core mechanic, start screen plus explanation, graphics, animations, sound effects and maybe particle effects. But you will rarely have the time to make them all pretty. You have to get a working prototype really fast and then improve the parts you think will be most important to your game specifically. We had lots of mechanic ideas on our todo list, a couple of animations and sounds, the progress counter and a game end of course. But we coulnd’t finish all this. Nevertheless we are happy with the result and the people that played it wrote some nice comments. We achieved as much as we could and didn’t waste to much time to create stuff that did not make into the game.
]]>This post pulls back a lost treasure. A study project which shall not be forgotten.
I want to show off an older project of mine. It’s an adaption of the board game “TIKAL” by Ravensburger. It’s a turn based strategy game where you have to send out your archaeologists to explore the unknown world. There are treasures and temples to discover. On each turn the player gets to draw a new tile from the stack and append it to the existing terrain. Afterwards he has 10 action points which he can spend to move to other tiles, dig for treasures or increase the value of a temple. The goal is to gather as much points as possible during the 5 evaluation rounds. These appear if a vulcano is drawn and added to the terrain. Rules and gameplay are simply adapted from the original, but the visuals and controls are all 3D related making it a different experience.
I developed this together with a friend of mine as a small project for university. Because we recently attended a lecture on mobile development for android, we wanted to make the game an android application as well. We decided to adapt an exisiting game to gain experience in coding and designing a game application rather than designing a game. So we picked a board game we knew and liked playing. But to make it stand apart from the board game we decided to make it 3D. With this in mind I searched for a proper game engine to use and found LIBGDX. Hurray, all problems solved! A big thank you to the LIBGDX crew at this point, great work. It’s that good, we didn’t even had to consider much android specific stuff because LIBGDX hides this very well behind their API. I ended up spending half the time on reading through the LIBGDX API just to learn from them
So take a look at the outcome.
Here are the different tiles to makeup the terrain. Each tile is a hexagon with 0-3 stones at the edges. They define how much it costs to move a figure across that edge. The stones are added in code.
We tried to keep the required interface to a minimum and focus on the fact that it’s in 3D. Therefore we chose to model all actions as little spheres which are placed above a tile if you click it. There are never more than 3 actions per tile so it won’t stack to high. But this decision let to another problem. If the interface is inside the world you might not see it depending on the camera position. We fixed this and significantly improved the ease of use by moving the camera to always focus the clicked field. By that you can click your way through the tiles and it’s always a smooth motion allowing you to see what actions appear.
But for those elements that required a 2D representation we tried to keep it simple. On the left side is the interface which shows the players, action points and earned points. Every time you draw a new tile an info panel slides in to the top right corner. And each gamestep is announced via a centralized label. Handling text overlays isn’t as easy as I thought it would be. You have to consider display duration, placement, priorities and different screen resolutions if you support multiple. If you don’t consider this you’ll probably end up with overlapping or lost messages and a great mess on the hud. Because of this I wrote a little helper to manage placements and priorities. The timing is managed with LIBGDX actions that you can apply to actors in the 2d scene graph. All 2D animations are done that way.
We did a lot of stuff besides the actual gameplay. Basically it’s been more learning than developing. We digged into 3D modelling, 2D interfaces even on multiple screen resolutions. We played with lighting and modeled a sun which orbits around the world. It’s also raining in Tikal from time to time. Therefore we checked out the 2d particle system of LIBGDX. We also made first steps with shaders and OpenGL in general. All the colored rectangles above temples and camps are billboards. Usually they are used to model clouds in a cheap manner, because they are only rectangles which always face the camera. This behaviour is programmed directly in a shader.
To sum it up it’s been a good learning phase in game development. LIBGDX taught us much about game architectures, rendering and so much more. But the game did get no further than a simple prototype. There is a lot of space for improvements although the gameplay is completly implemented. But animations, effects, multiplayer, networking and stuff like this which are unique to computer games are missing. Im not overly proud on this work but it’s okay and teached me the basics for further projects. I would share the game with you but I’m not sure about licensing because this is originally a Ravensburger game. I’m not sure if I can publish it. But anyways it’s more of a tech demo than a fun game
]]>A food truck is a large vehicle equipped to cook and sell food. Some, including ice cream trucks, sell frozen or prepackaged food; others have on-board kitchens and prepare food from scratch. Sandwiches, hamburgers, french fries, and other regional fast food fare is common. (Wikipedia)
Die Betreiber der Trucks haben entweder täglich wechselnde Standorte oder fahren gleich mehrere Standorte pro Tag an. Die Kunden müssen immer neu informiert werden, wo der Truck gerade ist. Mit Food Truck Alert gehört das der Vergangenheit an. Kunden können die Standorte der Trucks abonnieren und der Händler informiert selbstständig per Knopfdruck über seine Ankunft. Die App benachrichtigt dann jeden Kunden gezielt über das Smartphone.
Vielen Dank an Minas Hot Dogs aus Trier. Als erster Food Truck haben sie unsere App ausprobiert und sind begeistert. Auch die Joghurtfreunde aus Saarbrücken mit ihrem leckeren Frozen Joghurt sind seit neuestem in unserer Liste vertreten.
Mehr Infos und Details gibt es unter www.food-truck-alert.de
]]>
Wir sind immer offen für Feedback und Wünsche! Falls auch du ein Notificationsystem für WordPress brauchst dann schau auf Codecanyon vorbei.
]]>
]]>
Entwicklung
Das Projekt startete wie so viele als Spielerei. Inspiriert von Online Flash Games schusterte Stefan einen Prototyp auf dem iPhone zusammen. Weder Grafik noch Ton waren hier wirklich durchdacht oder aufeinander abgestimmt, aber es erfüllte eben den Zweck. Um das Projekt jedoch veröffentlichen zu können, musste ein echtes Framework her. Unsere erste Aufgabe bestand also darin eine Game-Engine zu finden mit der “Jump, Kitty, Jump” (damaliger Titel) umgesetzt werden kann.
Als Framework kommen nur C++ Engines in Frage, da auf iOS keine Java-Applikationen laufen. Damit fällt die Sprache, welche wir am besten beherrschen also weg und wird ersetzt durch eine die wir nur rudimentär verstehen. Aber wir wollten professionell mit nur einer Codebase für beide Plattformen entwicklen. Nach einigem Suchen und Ausprobieren entschieden wir uns für Cocos2d-x (Version 2), ein open-source Framework, das in der Entwicklerszene viel Lob erntet. Neue Sprache, unbekanntes Framework, das wird Spitze! Nach anfänglichen (großen) Problemen und (kleineren) Ausrastern wegen der doch recht spärlichen Dokumentation, kommen wir aber zu einem guten Fazit. Cocos2d-x hat ein simples und schlankes Konzept. Auch komplexere Spielabläufe sind recht schnell ohne umständlichen Code umgesetzt und C++ Features machen das ganze nochmal eleganter. Umständlicher wird es aber, falls man versucht, auf Mac und Linux gleichzeitig zu entwicklen ohne C++, den Compiler, den Linker, etc. so ganz zu verstehen. Während es für Mac bereits vorgefertigte Projektdateien für xCode gibt, muss der Linux-Benutzer alles von Hand einrichten, Makefiles pflegen und kompilieren. Möchte man den Vorteil einer IDE muss man selbst ein Eclipse oder QT Projekt anlegen inklusive aller Abhängigkeiten. Das kostete uns einige Zeit und führte am Ende dazu, dass wir nun beide mit einem Mac arbeiten.
Die Cross-Platform Thematik ist durch ein C++ Framework schon sehr viel einfacher geworden, aber nicht ganz verschwunden. Für iOS ist es einfach denn xCode kann natürlich eine iOS App kompilieren und das xCode Projekt war ja schon da. Um eine Android APK zu erhalten, muss man sich auf die Konsole begeben oder ein Eclipse Projekt aus dem vorhandenen Code erstellen. Egal welche Methode es gilt wieder, Makefiles manuell oder per Eclipse zu füttern und den Buildprozess (Compile, jarsign, zip) aufzubauen. Im Vergleich zur “1-Klick-Politik” des Mac definitiv mehr Aufwand. Außerdem kommen die Social-Features und GameCenter Integration noch hinzu. Wiedermal bietet Apple eine native Integration der großen Social Networks bereits an. Ein einfacher Objective-C Wrapper reicht und Twitter kann auch aus dem C++ Code benutzt werden. Unter Android mussten wir erstmal eine Bibliothek finden, die das ermöglicht. Eine einfache C++ Bibliothek war nicht aufzutreiben, also nahmen wir eine auf Java basierende. Das bedeutet aber das wir uns mit JNI (Java Native Invocations) auseinander setzen müssen.
Mit Kitty Jumpr ist auch unser Leveleditor in PHP entstanden. Da wir alle Spielinformationen (Position, Typ und Geschwindigkeit der Katzen) in einer JSON-Datei halten, war es schon nach kurzer Zeit nicht mehr möglich diese sauber per Hand zu pflegen. Mit diesem Editor können die Katzen mit wenigen Klicks positioniert und konfiguriert werden und abschließend einfach als JSON-Datei exportiert werden.
Marketing & Presse
Schon während der Entwicklungszeit haben wir andere Entwickler in deren Marketingbestreben beobachtet und versucht die für uns besten Möglichkeiten zu adaptieren. Daraufhin ist unser Account bei Twitter, Instagram, YouTube und Tumblr entstanden. Twitter hat sich dabei als der beste Kommunikationskanal herausgestellt. Mit den Hashtags #indiedev, #screenshotsaturday und #gamedev kann man in Sekundenschnelle sehr viele Leute erreichen. Zusätzlich haben wir schon früh angefangen E-Mail-Adressen von spielespezifischen Internetseiten zu sammeln um unsere Pressemitteilungen möglichst weit verbreiten zu können. Am Ende waren es über 200 Adressen. Des weiteren haben wir Gameplay-Videos auf YouTube veröffentlicht und diese über die sozialen Netzwerke geteilt. Das beste Video, unser Release-Trailer, hat bis heute über 1.000 Aufrufe.
Am 26.09. haben wir Kitty Jumpr an einem kleinen Stand beim City Campus in Trier vorgestellt. Über 100 Leute haben an diesem Abend unser Spiel angespielt und uns sehr viele nützliche Tips gegeben. Besonders bei der jungen Zielgruppe kam das Spiel besonders gut an, was sich in einem kleinen Downloadpeak bei den Android-Downloads bemerkbar machte. Wir vermuten dass die meisten jungen Leute aus Kostengründen ein günstiges Android-Handy besitzen und es deshalb keinen Ausschlag bei den iOS-Charts gab. Im Nachhinein war die Teilnahme am City Campus die beste Gelegenheit um das Spiel einer breiten Zielgruppe vorzustellen und somit noch grobe Fehler auszumerzen.
Öffnungsraten Pressemitteilung vom 29.09.2014
Drei Tage später, am 29.09., hatten wir endlich die Freigabe von Apple und konnten richtig starten. Noch am gleichen Tag haben wir unsere Pressemitteilung über die ganze Welt versandt. Von 217 über MailChimp versendete E-Mails wurden immerhin 42% geöffnet, wir waren also optimistisch gestimmt. Durch unsere, speziell für Kitty Jumpr erstellte Landing Page und eine eigene Presseseite mit vorgefertigtem Pressematerial, hatten wir uns einige Rückmeldungen und Reviews erhofft. Doch leider wurden unsere Erwartungen nicht erfüllt. Möglicherweise hatte unsere Pressemitteilung nicht genug Aussagekraft bzw. es wurde nicht klar worum es bei Kitty Jumpr geht und was es alles bietet. Vielleicht fehlte uns aber auch der Bekanntheitsgrad um zwischen den tausenden Indie-Veröffentlichungen nicht unterzugehen. Unsere Namenswahl hat sich definitiv auch als Fehler herausgestellt. Der von uns bewusst gewählt Rechtschreibfehler musste immer wieder erklärt werden und hat dazu geführt, dass wir seltener in den Stores gefunden wurden. Auch den Bezug zu Katzen gibt es in den Stores schon viel zu oft.
Anzahl der Downloads pro Tag (iOS und Android)
Deutlich erfolgreicher als unsere E-Mail Kampagne war die Kontaktaufnahme mit der lokalen Presse. Diese hat teilweise sehr schnell reagiert und uns zu einem Interview eingeladen. Am Ende konnten wir einige sehr schöne Zeitungsartikel verzeichnen. Besonders der Artikel im Volksfreund hat sehr viele Resonanz und Downloads gebracht. Unsere erfolgreichste Kampagne war jedoch völlig ungeplant. Wenige Tage nachdem wir Kitty Jumpr als Free-Version im AppStore angeboten hatten, sind wir als “Free App of the Day” auf einer großen Thailändischen Spieleseite erschienen.
Einnahmen pro Woche (iOS und Android)
Der Graph mit den Einnahmen korreliert nicht mit den Anzahl der Downloads, da wir uns nach einigen Wochen dazu entschieden haben die App komplett als kostenlose Version anzubieten. Die Entscheidung kam durch die immer weiter sinkenden Downloadzahlen und die Hoffnung durch eine kostenlose Version mehr User zu erreichen und damit unseren Bekanntheitsgrad zu steigern. Bis zum heutigen Tag haben wir sagenhafte 167,52 € Einnahmen durch Verkäufe generiert. Durch Einblendung von Werbeanzeigen wurden 2,95 € generiert, dabei muss jedoch erwähnt werden dass wir zur Zeit nur Werbung in der kostenlose Android-Version anzeigen und das auch noch sehr sparsam. Dem gegenüber stehen Ausgaben in Höhe von ca. 345 € für Softwarelizenzen, Assets und Kleinkram.
Indie-Entwickler in Deutschland (Gamestar)
Eine andere schöne Überraschung war die Zusammenstellung von deutschen Indie-Studios der GameStar. Hier sind wir zusammen mit unseren Freunden von gentlymad. in der Printausgabe gelandet.
Fazit
Der ganze Prozess war wie eine wilde Achterbahnfahrt und am Ende haben wir es nicht geschafft die kritische Masse an Spielern zu erreichen und die Entwicklungskosten zu decken. Dennoch würden wir Kitty Jumpr nicht als Fehlschlag bezeichnen. Wir haben jede Menge tolle Leute kennengelernt, sehr viel gelernt und viele Fehler gemacht die wir bei unserem nächsten Projekt bewusst vermeiden können.
]]>yesterday we launched KittyJumpr for Android.
]]>es gibt tolle Neuigkeiten. Am 26.09. dürfen wir KittyJumpr im Rahmen der Veranstaltung City Campus trifft Illuminale in Trier vorstellen. Wir haben jede Menge Tablets für euch dabei und würden uns freuen wenn ihr ein bisschen mit uns zockt.
Letzte Woche haben wir KittyJumpr zum Review gegeben und drücken nun die Daumen und hoffen in der nächsten Zeit endlich im AppStore zu sein. Des Weiteren sind wir an den letzten Zügen der Version für Android.
]]>Furthermore, we have published our first project: thome-bormann.de
]]>