About Me

Website

Role

Twitter

Github

Twitch

Steam

Hello everybody!
Now I'm developing a game with a simple unobtrusive gameplay. The goal of the game is to get to the other side by jumping on platforms. Control is a single jump button, but it's not that simple. In this case, I like Nintendo's approach to its games. Where, at first glance, the simple control of the character hides a deep mechanics that the player discovers gradually.
I want to implement this approach in my game. For example, if the landing immediately press jump, the character will make a combined jump with a flip. For combined jump player will earn more game points.
Game points can be spent, for example, that would save the game on a special platform for this. Thus, it is profitable for the player to plan his actions. In addition, for example, if the player lands on the edge of the platform, he will lose his balance and fall, but if the landing immediately press the jump button, the player will not fall and will continue to jump.
The game world too is not simple. Platforms have their own character: there are disappearing platforms,those that randomly move, move apart, etc. But more about that later.
Now ready character design, platform design and entry-level background. As well as basic animation and mechanics.
https://twitter.com/cubic321

Hello all and welcome to 31st Dev Diary for Project Taival! This weeks subjects are;
Starting to make a mini-game as a tutorial on Godot Engine.
Preparing for gathering funding for the project.
The Mini in a Game
This last week has been more productive in a concrete way, than many before it. Don't get me wrong, I have done brain storming all the time in anticipation of things finally working out with the After Effects, but no luck on that front still - I wish there was some app that you could load your After effects project as is and you could render your work using your GPU with all the effects that the CINEMA 4D plugin enables in the After Effects. If you know of any, give me a holler on the comments below.
I started doing this tutorial series on YouTube, which was quite efficient at explaining the basics of simple 3D rules and basic GScript coding to make the example stage function. It takes only about an hour or less to complete the whole tutorial, after which I started making a mini-game using and modifying the scripts used i the tutorial. Here is the result so far;
The idea is to make a Pong style, simple ball game with a twist and after that a simple football (soccer) game. The character moves, the ball rolls, but I still need to figure out some things to make it function properly. Luckily, Godot has a comprehensive and easy to use documentation built within Godot, which helps look up different commands and methods. I still have much to learn about GScript, so hopefully it's not too difficult.
Funding the Project
Other than making a Patreon account, I found out that you can use this Basic Attention Token -system in your YouTube, Reddit and Twitch channels, so that people can tip you with BAT -tokens, if they like your work or would like to support your efforts. To use this system, you need to download Brave browser and register as a creator on their site. After that they will guide you through the process, as you need to verify your identity to be able to take tips in the form of BAT tokens, or you can convert all your tips straight to Euros or US Dollars. The BAT system is still on it's early stages, but it is the first step to help bring a new and better, much less invasive and more secure way to advertise and tip your favorite content creators. Brave Browser is being developed by the co-founder of the Mozilla project and creator of JavaScript, Brendan Eich.
Those who decide to start using the Brave Browser regularly through my referral link, Brave will pay me 5 USD worth of BAT, which helps me, without you needing to pay anything. In turn, you can have your own referral links for you to earn more, just by using Brave browser. US customers are among the luckiest though, as just the US residents (to my knowledge) can get paid just by watching commercials on YouTube, for example or adds in general on any page. Some people have said, that by watching YouTube the whole day, they earned close to 40 USD worth of BAT tokens a day. Remember, if Cryptocurrencies are not your thing, you can have the payment in USD or EUR also. Alternatively, the Brave browser comes with a built in add blocker and script blocker, which can be easily set off permanently, if you don't like them. The Tipping functionality has been built in to the browser as well, making it a breeze to use, once set up correctly.
I still intend to use Patreon as a funding channel, as it might take even longer for the BAT Tips to start flowing, as it is such a young system at this point. Which brings me to the last topic; planning my Patreon page. I have been designing my Tier graphics and names for the tier and I will most likely just describe the Tiers as precious metals, as those are universal in every major culture. I have also modeled an octagonal star, that will be part of the design.
I have been thinking what could be an appropriate approach to introducing and tell something about myself. I'm still not sure, where the line with too much honesty goes, as I have already been publicly saying, that at an earlier point in my life, I have suffered from depression for a large portion of my life and open up the issue of mental health in general in my draft text quite a lot. I'm also planning to make a pledge, to donate 50% of all the income made from my games and donations that go over 2000 euros, for mental Health Research and Care, and/or Suicide prevention, as that is a topic that should be taken more seriously, as depression and anxiety disorders are getting more common around the world, and WHO estimates, that 50% of these mental problems go un-diagnosed in Europe alone. Either due to peer pressure to not slow down "or you will loose your standing on job markets", or like most of the times, people don't always know that they are depressed. Too many still thinks that depression is a myth and that the real reason is poor motivation or a weak mind, labeling depression as a hypochondria of a weak mind.
If you have any suggestions on that or any other matter, please feel free to comment. I have also updated my reddit channel, as I finally created a sub-reddit for Project Taival here;
https://www.reddit.com/r/ProjectTaival/
Thank you for tuning in and I'll see you on the next one!
You can check out every possible mid week announcements about the project on these official channels;
• YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •

This time I want to post something that is not related to a game I’m working on right now but to the engines I used making the last two games.
Game #2 (Castle Adventure) was made with Godot and Game #3 (Tapmoji) with Defold. I mentioned on Twitter that Defold was completely new to me and I was asked by the Defold engine developers themselves what my on-boarding experience was and if I could compare the ease-of-use and the feature-set with Godot.
At first I want to mention that I didn’t try every single feature in both engines. In general I don’t have much time so I focus on making 2D games as fast as possible. So I only used the features that were needed to finish these games and didn’t try everything. Maybe there are still features I don’t know very well that would be important to mention.
Godot
Setup
I used Godot in two game jams already and I think I know this engine a bit better than Defold. I really like this engine! The reason being, it was the first engine I used where it wasn’t necessary to download additional stuff or install anything. You can just open the downloaded file and start your project.
Example Projects
A second big plus was the large amount of example projects that can be chosen right from the editor. The Godot community seems to be very active and this reflects in the large number of examples.
GUI
The GUI is very clear and intuitive in my opinon. It’s divided in 4 parts: On the left there is the file system of the project and the scene hierarchy, which contains the nodes of the current scene. The inspector is on the right where you can change properties of the currently selected node. In the main area you can switch between the scripting editor and the graphical 2D or 3D scene editor. In the bottom area you can switch between the output console, the debugger, the audio editor and the animation editor.
The Godot editor
Scripting Language and Editor
The scripting language is GDScript, with a syntax similar to Python and some optimizations for the Godot engine. The automatic code completition in the editor is really helpful and speeds up coding really fast. Since the release of Godot 3.0 it is possible to code with C# and C++ as well.
The scripting editor in Godot
Docs
The documentation is very detailed and includes a huge amount of tutorials. Every single feature has its own tutorial. There are not only examples provided by the community, which can be chosen at the start screen of Godot, but also there is a GitHub repository which includes a huge amount of demo projects.
Features
In Godot you work with scenes. There is a powerful 2D and 3D editor where you can add and edit objects very easily. It is possible to choose from a large amount of pre-defined nodes for sprites, colliders, tilemaps, lights, sounds, particles, animations, networking and many many more.
A nice, big feature is the built-in editor for key-frame animations. It is possible to change every single property of a node over time. Setting up keyframe animations was very intuitive and fast for me. It saves one from writing a lot of code.
Godot has a lot of features which make developing 2D games very easy. My favourites are, as already mentioned, the key-frame animation editor, and furthermore, the TileMap editor and the simple approach to create frame-based 2D animations.
Desktop, Web and Mobile export
The desktop build aswell as the web build are very simply done with just a few clicks. When I was making “Castle Adventure” I used Godot 3.0. I couldn’t release a web build because it ran very slow. The problem was the number of lightsources and particles that are being rendered at once. I didn’t test it with Godot 3.1 yet, but maybe the web builds are more performant now.
Issues
Besides this Html5 perfomance issue there was also a problem setting up particles while making “Castle Adventure”. It was not possible to let particles emit in a particular direction. I found this Github issue related to this problem. Fortunately this was fixed in Godot 3.1!
I used Godot twice in game jams already and had to forcibly work with Git. Honestly at both jams the whole team was not amused about the time we wasted solving merge conflicts. The problem occured everytime when two or more people where working at the same scene and pushed their changes to the repository. The quickest solution for this problem was making as many scenes as possible and splitting the work, so everyone was working at their own scene.
In my opinion there should be an easier way to call nodes of a hierarchy by code. For example in Unity one can just call GameObject.Find(“Name”) whereas in Godot you often have to call every single node in the hiearchy until you reach the node you want (get_root(). get_node(“..”). get_node(“..”). get_child() …), especially when you try to call a node from another scene. This slows down coding, since I have to look up how to reach a particular node nearly everytime. Something similar to GameObject.Find() in Godot would be very nice!
Edit: Thanks to some feedback I have learned that Godot has such feature already (Node.find_node(...))! Thank you!
Defold
Setup
Like in Godot, there is no setup for installation. You just start the application and choose your project or an example project. It’s quite similar to Godot, only there are less sample projects. But what Defold does better: The sample projects are explained like tutorials. And this was really hepful to me. Less googling, yeah!
Example Projects
There are not only sample projects included in the editor, but also examples in the docs, and there is a GitHub repository with demo projects.
GUI
The GUI is a bit simpler than in Godot, since there are less built-in features. But the main part is the same: You have your project hierarchy on the left, in the central area you can switch betwen a graphical UI editor and the scripting editor. On the right you create your gameobjects and define their properties. The design is very simple. There are no additional windows for adding components or defining project properties for example. Everything works with right-click and choosing out of a context menu.
The Defold editor
Scripting and Editor
The scripting language here is Lua. The Editor is very simple. The automatic code completition is not as powerful as in Godot. For example it would be nice to have auto-completition when typing URLs to gameobjects, which I have to lookup everytime I need one. Also I miss popular shortcuts like Ctrl+X for deleting a whole line of code or Ctrl+C + Ctrl+V (with nothing selected) for duplicating a line. But there is an option to open files in an external editor. So it is possible to open the .script files in an editor like Sublime Text or something similar.
Defold scripting editor
Docs
On the Website you can find Manuals, where every component is explained with an example and a couple of nice graphics. There is also a section Tutorials, which contains 9 games with source code. You can test them directly in the browser. You can choose them also as example projects when you start the Defold engine. The third big help on the Website is the section with Examples which shows some examples of main components like Animations, Particles, GUI, Debugging and Input. Everything is explained very lovely and detailed, espacially in the Manuals. But the examples are focused mainly at developing 2D games. For working with 3D environments there is provided little information.
Features
In Defold you have collections, which are quite similar to scenes in Godot. Collections can contain Gameobjects or other collections. Gameobjects contain components which define its visual, audible and logic representation. To access objects or components in this tree structure, you have to write the path like an url. This makes it easy to access every component out of every scriptfile.
To define properties of the application you have to change values in one single file. The game.project file. Very clear and compact approach.
There is also a curve editor for animations. I never used it so far, but I think it’s really helpful when making particle effects.
My absolute favourite feature is the possibility to build and hot-reaload on mobile devices. On Android you just have to install an app called dmengine. It was really helpful making “Tapmoji” for Android and has accelerated the development of this game very much.
Finally, like in Godot, there is also a useful debugger.
Desktop, Web and mobile export
And again like in Godot, all exports are possible with just a bunch of clicks. To install the exported apk on an Android device you have to install the adb tools.
Issues
In general there are less build-in features then in the Godot engine. It feels kind of more low-level. This was noticable when I wanted to handle input clicking on an gameobject for example. Converting screenspace to worldspace coordinates is a thing you have to do on your own in Defold. Rotating gameobjects doesn’t work as I expected and experienced in other engines as well. There is no such function like rotateBy(degrees). Having helper functions for these things would make prototyping and coding faster.
Fortunatly some helper exist! But not in the editor, you have to download them. There is something called Asset-Portal. There are some examples that can be simply imported as libraries into existing projects. There is also something really powerful for the input issue I mentioned above: Defold-Input.
I had two problems making “Tapmoji”, that took me a lot of time: The first one was related to random numbers. Even though I initialized the random number generator with system time, I experienced strange behaviour. I spawned emojis moving from left or right randomly. But the first few seconds after starting the app, they all spawned at the same direction. The first few values seemed to be the same, not random. I found this post, which helped me with a really strange solution: calling random() multiple times before using random numbers. I think this shouldn’t be necessary 😉
The second problem was the web build: It was very slow in comparison to the desktop build. The solution here was to uncheck the V-Sync option in the game.project file. Having this option checked, there is a delta-time issue when running the build in browsers. Maybe there should be a short hint in the docs?
The last and least important issue is related to the usability. Like mentioned above, I would like to use the scripting editor like every other editor, with the proven standard shortcuts. It simply makes me code faster.
My Conclusion
A big plus with both engines was the large amount of example projects that can be chosen right from the editor, they can help you find your way into the engine. Godot has more examples but Defold has some projects that are structured like tutorials, which is a lot more helpful in getting to know the engine.
I like Python/GDScript more than Lua. Lua is not that popular, so I had to learn Lua before working with Defold. For me, it’s not as much fun as Python (why the hell do they start counting at 1??). But of course this is my subjective opinion, not an engine issue.
Now let’s get to the feature set. Godot has more build-in features than Defold. It is advantageous to create 2D games fast. But having less built-in features doesn’t make Defold a bad engine. Under the hood, Defold is a 3D engine. It keeps things more low level, since this results in a wider range of possibilities for devs. However, the Godot engine started as a tool for developing 2D games, therefore it evolved as an engine which tries to make 2D game development as simple as possible. This results in more 2D features.
With both Godot and Defold, developing the very first game worked faster than I expected. You get a lot of help and useful docs and examples on both sides.
But there is still a big difference: Godot is open-source and Defold is not! I’m a big fan of the open-source approach and that’s a big plus for the Godot engine. I’m sure the Defold devs have their reasons for not going open-source (maybe beacause of the collaboration with King) but as you can see at the Godot project, this open source thing works just fine!
Both engines are constantly being worked on and both communities are very active and growing. The devs of both engines reacted to my twitter posts, that shows me that they take care of their communities! 😉 Especially the Defold devs were willing to help me and wanted my feedback on their engine.
That’s all! That were my impressions after using both engines for only a short amount of time. There are far more things to compare to each other, but as mentioned before, I don’t have that much experience with either engine. I hope that this comparison was informative for some of you and may help someone choose a new engine.
I’m looking forward to the development of the engines in the next few years!
View the full article

Hello again! it’s time for a new announcement: This month I will deal with Godot 3.0, making a Platformer/Jump’n’Run!
For those who are new here: I try to create and release a new game every month, using another game engine in every project. Last month I’ve created the first game using LibGDX, which you can play here: Super Shot. Feedback and comments are welcome!
This time, the idea is to create a platformer with an atmospheric dungeon setting where a knight has to find his way through different levels, collecting treasures and fighting against enemies. Since I’m a big fan of Role-Playing Games, I would like to add some RPG elements. The player will be able to choose between different kinds of swords, armour and upgrades. To keep this simple, there will not be something like an inventory or skill system, but the player will be able to choose one of two upgrades, everytime he opens a new treasure chest.
I’ve already created some concept art and took a first look at Godot. After about one day of watching tutorials and getting into Godot and with just about 140 lines of code, the result looks like this:
Current progress
This includes a tile-based level, dynamic lights, a tile-based animation of the player and his movement, keyframe animations for the sword and the key.
What is Godot 3.0?
Godot is a free and open source community-driven 2D and 3D game engine, which comes with a GUI editor with many nice and intuitive features. After downloading the engine you can start directly without installing anything.
It’s very easy to create scenes like the one above with just a bunch of mouse-clicks. To implement game logic it is necessery to attach script files to objects and code in a python-like language which is called GDScript. You can also use MonoDevelop and code in C#. The documentation is included in the editor, which is very helpful.
A really cool feature is the possibility to download simple demo projects right from the editor, for me this was a great help when I was adding lights into the scene.
Screenshot of the Godot 3.0 Editor
In general Godot 3.0 provides everything a 2D and 3D game needs: Audio, physics, math, animation, input, file I/O, creating GUI, shading, networking and even AR/VR interfaces.
Useful links
Here are some links for more information about Godot:
The Godot website and download: godotengine.org
Online-Documentation: Godot-Docs
Some tutorials I came across so far:
GamesFromScratch on Youtube (this guy does literally everything related to game development ;))
Godot Platformer tutorial series from UmaiPixel on Youtube
Defining the Gameplay Components
These are the main components that are necessary for gameplay:
Tilemap based levels with background and collidable tiles (done)
Player movement, player death (done)
Dangerous obstacles like spikes etc. (done)
Enemies
Combat system
Collecting keys, opening treasures (done)
Upgrade system (GUI for choosing new upgrade)
GUI showing hitpoints and stamina
Level transitions
Menu
Creating graphics and animations, and finding suitable sounds is also part of nearly every single point mentioned above. Hopefully I will be able to finish them by the end of month.
Let’s Move On!
I really like the current state and the way these things are achieved using Godot. My next step will be to start implementing the combat system and some enemies.
Come back in a week or two for an update and check out my Twitter for some screenshots!
Meanwhile you can try out my last game (online): Super Shot
Sourcecode
Of course I created a Github repository for this project, too: Godot_platformer
Or simply download the project directly:
Godot_platformer_update1 (zip, 715 KB)Download
View the full article

A few days ago I published my second game – Castle Adventure, A Platformer using the Godot Engine – and finally here are some news related to the development process!
As you have maybe noticed, it took me more time than just one month. Since I had exams in march I decided to take another month, because I was not really satisfied with the state and didn’t have enough time to finish the game.
So here it is! A simple Platformer with eight levels with a castle-like setting, where a knight has to collect coins, avoid obstacles, destroy woodboxes, fight against enemies like ghosts and skeletons, find keys and open treasure chests getting new weapons. The player has three lifes and has to restart a level when he looses them all. The goal is to get through all stages and collect as many coins as possible.
Progress
There are some new features since the last update:
A menu, which is simply a playable stage with the title of the game at the top.
Destroyable woodboxes with spreading particles
Possibility to collect coins
6 new swords
3 new levels
Soundeffects and background music
A outro screen
Summary
Generally, most of the features I added were very simple to implement thanks to the Godot editor. My favourite was the animation of the enemies. For example, the movement of the skeleton is made with keyframe animations without a single line of code! The movement of the sword, the creation and the movement of the background, the lightning, all particle effects and the graphical user interface were also done simply with the help of the editor.
The most of the game logic is scripted in a file attached to the player. Like the movement and behaviour of the player and the events triggered by collisions with items or enemies. Generally, thanks to GDScript, a python-like language, and the useful code completition aswell as the included docs, scripting is very easy and clear, too.
One of the most time consuming features was the possibility to dynamically change the weapon of the player when a treasure chest is being opened. There are two types of swords: a short and a long one. Overall there are twelve different swords and with every sword comes a card which is shown in the pop-up window of the treasure chest.
Weapons
Because the most things are done fast using the GUI Editor, I could focus more on graphical stuff and made my own castle tilesets for the platforms and the background, some obstacles like spikes, a circular saw and an animated zombie-hand and the swords, using Inkscape. Sounds, by the way, are all from OpenGameArt.org.
Problem: Html5 performance
Exporting the project into a Windows, Linux or Html5 Application is as simple as everything else in Godot. It is done with a bunch of clicks. But wait, why there is no Html5 version on the Itch.io page of this game? The answer is simple: the Html5 version was to laggy. Every level of the game has the most time approximately five lightsources being rendered at the same time. I think this is the main performace issue. Also the particle effects are slowing down the performace, everytime they appear.
There was no time left to solve this and also I still didn’t update the project to the new Godot 3.1, which was released just about two weeks ago. I’m curious if this will help. If this will be the case, I will of course update the game and maybe even upload a playable web version.
Conclusion
I’m happy to have finished another game but, as ususal, there are still more things I would like to add. For example more levels, a better ending scene and checkpoints where the player spawns after getting killed. Maybe I will update the game someday.
As mentioned many times yet, developing a game with Godot is very easy and fast in my opinion. There was no feature I struggled with for hours. The Engine is a good choice for both, fast prototyping of game ideas, and creating nice and polished games with every feature a game needs. The best thing is, that Godot is open source and still in development!
Personally, I like to code everything myself, therefore I used engines like LibGDX so far (like in my last game, SuperShot). So it was a new experience to me to mainly focus on the graphics/art and do everything else with a bunch of clicks without planning much time just for coding.
Like in LibGDX (which is based on Java) it is very simple to export games for all platforms. The only drawback in comparison to LibGDX is that you cannot just simply export and distribute a jar-File, which runs on Windows and iOS, but you have to export the project as an iOS application using a computer running the iOS operating system. Because of that i’m not able to distribute an iOS version of the game.
But being based on C++ Godot seems to achieve a higher performance than LibGDX, which is a big advantage.
Finally, I really like Godot, and I think I will use it in the future for my private 2D game projects!
Sourcecode
Of course this project is open source and you can check it out on GitHub or download it here:
Godot_platformer_update3 (with release builds) (zip, 37,5 MB)Download
Don’t hesitate to give me some feedback on the gameplay, the graphics and the sourcecode here in the comments or on Twitter!
Download the game here (itch.io).
View the full article

Hello, I’m Phil, a hobby game developer who wants to share some experiences with the world. As I worked on many private hobby projects so far but didn’t really release anything, I decided to start a blog which will hopefully motivate me to finish and to share some games and experiences with the gamedev community.
The main idea is to create a new, simple game using a different kind of technique/engine every month . I will compare the engines by showing all the positive and negative aspects I had to deal with.
Another goal is to get an overview of the possibilities the engines provide, to know which would be the best fit for the ideas I (you) have. Since I haven’t worked with many of these engines thus far, it will be a new experience to me nearly everytime I make a new game.
This will also define the way I will write most of my blogposts: for developers who want to know how to get started in a particular gameengine, how basic things work and what possibilities the engine offers in general.
Hopefully there will be a project at the end for each engine to serve as an example for my readers. Of course my projects will be open source and I will use Git to share my code.
Engines
These are the engines I will focus on first:
LibGDX
Godot
Phaser
Cocos2d-x
Unity
Unreal Engine
Yeah, thats a lot of engines. Some are very big, some really small. Since I’m doing it in my free time, and one month is really a small amout of time to develop a game, I will focus on simple 2D games (unfortunately no AAA games, sorry guys!) , as 3D assets are taking a lot of time. Nevertheless maybe there will be some small 3D assets in some games (maybe in some kind of 3D platformer) as that would be a new experience for me as well.
There are far more engines like MonoGame, CryEngine, Amazon Lumberyard, ShiVa Engine, Game Maker … but I don’t want to get ahead of myself. Let’s see what the future brings.
More things to show
Apart from this possibly I will also show some examples on how I did my graphics. I like to use Inkscape and I really have a lot of fun making cartoon-style 2D graphics. As I’m really happy everytime I see people blogging about graphics and stuff, showing some examples and simple tricks, I think I should do that too. So there will also be something more to see than just code.
Wow, that’s a lot of stuff, dude..
For those of you who think so, you are totally right! But I think I have enough experience programming in different kinds of languages and creating games with differend kinds of engines. So new stuff shouldn’t be that hard to learn. Failing is also a part of the process of developing. If a project fails I will tell you why, show you the problems I had and publish the code anyway.
Finally, I want to make clear what I will not cover in this Blog: I will not show the basics of each language (Java, Javascript, C#, C++, ..) as that would go beyond the scope of this blog. Furthermore I will not explain every single line of code. I will explain the basic concepts and the main parts of the code. Of course I will try to comment the code files as much as possible to make it understandable for beginners. If something is unclear feel free to write a comment. I will do my best to explain as much as possible.
I’m really excited to post the first updates on the first game! Secret hint: it will be a game made with LibGDX! Follow me on twitter to be noticed about updates (@game_month). Stay tuned!
View the full article

Welcome to my first attempt at making a game in a month! Thanks to the holidays I had some time to set this blog up and start working on my January-Game.
The first game will be a simple Shoot’em Up made with LibGDX, an open source multi-platform Java game framework. It’s a framework I used many times so far and which I know very well. I think that’s good for the start as the risk will be low that I wont finish it in time. I can focus mainly on the game itself and don’t have to learn things from the start.
The Game
The goal is to make a simple endless sidescrolling Shoot’em Up in a cartoon style space/alien setting. The player controls the spaceship holding down one button (like in flappy bird) and has to shoot down attacking alien spaceships, surviving as long as possible, while the enemies will become more challanging with time. The GUI will show the current points and a life bar with the player’s ship state.
If we can implement this basic idea early, we might also add some items that are upgrading the ship of the player
Screenshot of current state
The Engine and Tools
LibGDX provides everything needed in a 2D game. Audio and input handling, math and physics, a 2D particle system, tilemap support, a 2D UI library, OpenGL helpers like Shaders and even a high-level 3D-API. It is very easy to deploy a project as a desktop, android, iOS or Html5 application. There is no editor like in Unity or Godot, so you manually have to write code in Java. But there are some useful tools like a particle editor and a texture packer, which can make this task easier. After downloading and executing the LibGDX Setup App you have to open the project in your favourite Java editor. It is necessery to install the Java JDK.
Personally, I prefer to use IntelliJ for coding in Java. Setting up the project in IntelliJ is explained further down in the text. For creating some assets I will use Inkscape.
Summed up, the setup looks as follows:
LibGDX Setup App
Java JDK
Editor: IntelliJ
Graphics: Inkscape
What components we will focus on?
The game will feature follwing main components:
Animated objects
Scrolling parallax background with layers
Object pooling
Collision handling
Playing sounds
User Interface
LibGDX project setup with IntelliJ
The Setup App
To create a LibGDX project you have to execute the LibGDX Setup App. I checked “Desktop” and “Html” as it gives me the possibility to publish the game in the web later on. Besides, I chose “Tools” to have the option to add particle effects.
The Setup App.
Make sure that the Java JDK is installed on your system.
Import to IntelliJ
To import the project to IntelliJ you have to click on “File > Open…”. Navigate to the project (here: Spacegame) and doubleclick on “build.gradle”. Confirm the next dialog with “Open as project“. In the following window make sure that the Java JDK is chosen. I prefer to check “Use auto-import”. Hit OK and wait a moment for Gradle to build the project.
Next, it is necessery to create the desktop launcher configuration. In the Project window go to “Spacegame > desktop > src > .. > DesktopLauncher. Rightclick this file and click on “Run ‘DesktopLauncher.main()’”. This will create a DesktopLauncher configuration. Don’t panic, we will fix the error that should show up now.
The last step is to link the assets folder with the project. Go to the “Run” menu and click “Edit Configurations…”. Choose “DesktopLauncher” on the left. In the “Configuration” tab, fill the “Working directory” attribute with the path to the core/assets folder. In my case “D:\dev\Projekte\LibGDX\Spacegame\core\assets”.
Now it should be possible to run the application hitting the green arrow on the top-right corner.
Everything happens in the “core” module. Spacegame.java is the starting point. In the “desktop” module you can find the launcher file for the desktop application of your game. It does nothing more than loading Spacegame.java. If we would have chosen the android module in the setup app, it would also have an own folder with a launcher file.
You should check out the documentation for more information about setting up projects (in IntelliJ, Eclipse, Netbeans) and more stuff.
Some good tutorials on LibGDX are:
GamesFromScratch.com
And on GamesFromScratch on YouTube
A LibGDX Game Template
Since I worked with libGDX already, I have a template which I reuse often. You can clone it from Github or download it right here:
Template Project (zip, 362 KB)Download
You can import it in IntelliJ like described above. Don’t forget to link the assets folder.
The template project consists of two Screens: a loading screen (LoadingScreen.java) and the gameplay screen (GameplayScreen.java). The base class and the starting point for the LoadingScreen is GdxGame.java. The loading screen is shown as long as the asset manager (Resources.java) is loading the asset files. There is also a basic input class (GameInput.java) and a class for creating 2D animations (AnimatedSprite.java). GUI elements like fonts and buttons (Scene2D elements) can be implemented in GUIStage.java
Gameplay.java is the starting point for adding gameplay code. It loads an example animation. Feel free to download and to test the project.
The template includes this tileset with spaceship animations I made some time ago:
Spaceship tileset. Original size: 1024×1024
Shoot’em Up Code Structure
Now back to our “Spacegame”. It’s time to describe how the code will be structured.
The GameplayScreen (GameplayScreen.java) will manage the user input (GameInput.java), the GUI (GUIStage.java) and the gameplay. Gameplay.java is the class where the actual game will happen – creating, updating and drawing the background, the player, the enemies and reacting to collisions and input.
The following diagram shows just the basic structure of the gameplay components. Of course, we will add more classes later on.
Basic code structure
As the player and the enemies will have nearly the same functionalities, namely beeing animated, shooting and being shot, there will be a base class (ShootingObject.java) which Player.java and Enemy.java will inherit from. ShootingObjects will spawn missiles (Missile.java).
To take care of the Java garbage collector, we will use object pooling. We will not create a new instance of an enemy or a missile every time when a new one has spawned, but reuse objects that are “dead”. Therefore we need a spawn pool (SpawnPool.java) which manages all spawn objects. A SpawnObject.java interface will be needed for the enemies and missiles. ParallaxBackground.java handles the scrolling background layers (ParallaxLayer.java).
Current progress
Finally, it’s time to show how the actual state of the game looks like. The background movement, spawn pooling and collisions are working well so far. But there are still many things to do. For example the GUI, a menu, more enemies … But hey, it’s a playable state!
Current state of the game
Get the sourcecode on Github or download it right here:
Libgdx_shootemup_update1.zip (419 KB)Download
That’s all for now!
In the next blogpost I will dive deeper into the code and show how loading resources, using animations, background movement, object pooling and collisions work. It is also planned to make a short how-to for the assets I created with Inkscape in a future blogpost. I’m really excited to show you some progress! Don’t forget to follow me on Twitter to get updates! See you soon!
View the full article

Hi everyone! I’m back with an update of my first monthy game this year. I have made great progress and it seems like I’m on a good way to finish this game in January.
Update: Clouds, explosions, health-bar, score
Here is a short summary of the progress:
Menu, pause and game over states
Player death: By getting shot, collision with enemies and ground
Restart handling – reinitializing gameplay
Counting score, showing at top-right corner
Showing health-bar, decreasing on hit
Spawning non-shooting obstacles (clouds)
Spawning items: Repair tool
Additional “super”-class “GameObject” – For ShootingObjects, Obstacles and Items – for handling movement and collision areas
Spawning explosion animation on enemy and player death
Background shaking
Dynamic player shadow
Gameplay improvements
Press to start!
The game starts with a small menu now. It’s done very simple: At the start the gameplay is initialized, but the spawning of enemies and the updating of the player is deactivated, while the flag “started” in the Gameplay class is set to false. So the background is scrolling, which makes an ingame-feeling in the menu. At the center of the screen a label “Press to start” is shown by the GUIStage class. When the user presses space, the “started“-flag is set to true and the Gameplay.update() method spawns enemies and updates everything.
The pause-state works nearly the same. There is a paused-flag, which is set to true, when the user hits escape. When paused is true, the whole update method does nothing anymore, but the Gameplay.draw() method still renders everything. A label “Pause” is shown by the GUIStage class.
Game Over!
As stated above the player can be killed now. This gameplay mechanic needed a bunch of things to be done. At first, the player can crash with the ground. Therefore a ground shadow was added. It gives the player a feeling of how much space is left between the ground and the spaceship.
Furthermore a collision with an missile decreases the health attribute. To show the health to the player, a health bar is needed. It consists of two images rendered at the same position (Check out GUIStage.java). A border image and a red inner image, which width is set dynamically according to the health.
To make the death more intense, a background-shake has been added and some explosion animations will spawn now. The explosions are spawned, too, when an enemy is being killed. I made this animation some time ago, so it did’t take a lot of time to implement this. Explosions are “SpawnObjects” which have their own pool, and are respawned by the SpawnPool, like enemies or missiles. Read more about the SpawnPool further down in the text.
The explosion animation consists of 8 frames.
At the player’s death, the gameover process is triggered. A short time offset of two seconds lets the explosion animations finish and makes the player realize that he just lost. The spawning of new enemies is stopped, the control of the player is deactivated but the background still moves. After these two seconds the “Game Over” label is shown and the player has to press a button again, to restart the game.
Items
Another new feature are items (Item.java). Items are spawning at a fixed interval with an own timer. They are managed by the SpawnPool, too. Currently there is only a heal-item but it is possible to define different types with own animations and effects. Items are surrounded by a bubble, which is an additional sprite rendered above the actual item.
A heal-item in a bubble
Obstacles
To make the game less monotone, I had the spontaneous idea to let some obstacles spawn (Obstacle.java). In the current version, a wave of clouds spawns from time to time, which have to be avoided by the player. Of course, it’s possible to add more types of obstacles later on.
The cloud with a thunder animation
Level generation
Since there are obstacles now, the generation of the spawn stages was improved. It works as follows: A stage has a fixed time limit (currently 20 seconds). Currently there are just four types of enemies. Every stage spawns another type of enemy. After four stages two types of enemies spawn at the same time for the next four stages. After these eight stages the spawn system begins at the first stage again, but with an decreased spawn interval to spawn more enemies. Check out calcLevel() and spawnObjects() in Gameplay.java.
After every two stages, there spawns an obstacle stage, which pauses the spawning of enemies. The duration of the obstacle stage increases every time a new obstacle stage spawns, so this part of the game becomes also harder with time.
The main part is done!
So for now, all core mechanics and features work fine! This is where the fun part starts: creating and adding more enemies, missiles, items, obstacles, levels and, of course, sounds. Also the GUI and the menu need some polish. Finally, some balancing has to be done to make the game as fun as possible. I’m looking forward to the next update!
To do:
More enemies and missile types
More items
More levels
Cosmetics (Menu, GUI)
Sounds
Balancing
…drink more coffee!
For those who are here just for the update: that’s all for now! Come back in a week to play the finished game! Until then, I appreciate every feedback and suggestion in the comments.
For more information about this “A Game A Month”-Project read this post.
Source code
Check out the source code of the current udpate on Github or download it here:
Libgdx_shootemup_update2 (zip, 1 MB)Download
To import it to IntelliJ properly, check out my previous post.
More code!
For those who are interested: Like I stated in my previous post, I will dive deeper into the code in this blogpost. Especially the SpawnPool, which is the most important and helpful component of the game, I guess.
Check out the next page!
View the full article

Hello back! It’s been nearly a month since the announcement of the second game: Making a dungeon platformer using Godot 3. Unfortunately I had to deal with some exams in the past weeks and had not enough time to finish this game at the end of february.
Nevertheless, I made some improvements and it looks great, yet! The more features I add, the more new ideas I have. The whole thing becomes bigger than expected. Therefore I decided to take some more time, until the end of march, and take the chance to make a really nice and polished game. Also, in the meantime the feedback to my last update on Twitter was really good, which motivated me to take more time and effort for this game.
That means, I will not start to make a new game in march, since there is too little time to work into a new game engine and finish a whole new game. Sorry!
New features
This is how the current progress looks like:
The player has 3 lifes, decreasing on collision with obstacle or enemy
Dialog for choosing new weapon, when opening crate
8 different swords
New obstacle: Rotating saw
New obstacle: Grabbing zombie hand
New enemy: Ghost
New item: Potion, collectable by player, restores a life
Ability to hit and kill enemies with sword
A white “swoosh” effect when attacking with sword
Player is getting hurt when colliding with enemy
Particle effects: when collecting potion, getting new sword, kiling enemy, spawning zombie-hand
New assets for the background: Windows
Level transitions
4 levels
Things to do
Of course I want to add more levels, introducing in every level a new enemy or obstacle.
I’m currently working on a skeleton which will move and throw bones.
Also, I will add some moving platforms, which will add some variety to the game.
With more levels there will be more swords needed, which the player will be able to collect.
There will be also more things to collect, like diamonds or coins. I’m not sure right now, but I will eventually add something like that.
Also, a small menu scene is on the to-do list.
Furthermore it will be a lot of work to find fitting soundeffects for every feature of the game.
There are far more things I’d like to add, but these are the most important ones and I think it’s definitely enough for the next two weeks, since I will also do the graphics on my own.
That’s all for now! Check my Twitter for some small updates and don’t hesitate to give me some feedback on the gameplay, graphics or the source code!
Source code
Meanwhile you can download the current state of the project on Github or simply here as zip file:
Godot_platformer_update2 (zip, 592 KB)Download
View the full article