[ENSICAEN] TunnelGL, One week of OpenGL


The project was to create a simple game using OpenGL. At this moment, our skills in OpenGL were really limited. So we needed something as simple as possible as a game. And then, started to improve it! We got a week to develop this game. We were in a team but only 2 of us was able to program the game. The third one created the ship.

This project was launched in a week where we didn’t really get the time to develop such a game because of the end of the scholar year. We wanted to finish the year project before starting to develop this game and that is why I was not really sure if I will post something about this project. But the things were better than expected! We got a free day on Monday, therefore the weekend was pretty long and we were able to program a lot of things.

We chose to develop a game where the player is in a tunnel and has to avoid the obstacles. The tunnel was programmed to be a straight cylinder with the same radius all the time. The colors change with the Z position of the edge. We got something like a rainbow, and it was pretty funny because it was just a test to see the different portion. The obstacles were design to be white, with a gradient from the edge of the tunnel to the upper edge of the obstacle. The effect we got was an “ice” style. We added a spot light to illuminate the upper edges of the obstacles. Then, the ice effect was completed with a beautiful white on the top!
For the obstacles design, they are not an object we added to the tunnel, they were directly generated during the generation of the tunnel. Therefore, The tunnel is generated with holes and obstacles by a matrix which represents a portion of it.

HUD and Game

For the game, we adjust the speed of the player to be increased with a boost (Only the Z component). And we adjust the angular velocity with the Z speed to allow the player to success in every section of the tunnel he encounters on his way, whatever the speed he had. As I said earlier, we cut the tunnel in sections. A section is loaded with a matrix and a matrix can be design in a .txt file with your own skills. The limitation are 12 sides and a multiple of 20 for the length.

Now the ship: you can go left, right and boost. When you use the boost, the camera comes closer to the ship to simulate the propulsion of the ship. We added a camera shaking to improve this feeling. The higher your speed is, the closer to the cockpit you will be. For the score, we double it when you are boosting your ship. Elsewhere, it depends on the speed. Each 10 sections, the tunnel levels up and generates harder section. From this moment on, we got a beautiful game, very polished and programmed with a lot of love during an incredible weekend of 3 days! We added some sound effects and there it was.

I was really passionate during the development of this game because I really like OpenGL. It was a great experience. I think now I can start to make a new game using this technology. A goal for the future! :D
When this game was developed, I wanted to add some stuffs to it. But my project manager didn’t find it really interesting enough to be added. I will develop them here now because I forked the project to save my work on the new functionalities I did during this weekend. The first one is some curves for the tunnel and a variation of the radius. The curve were too straight to be added but the variation of the radius were perfect. But it was not the same game because these functionalities change the game a little bit too much. So, I will put both versions available to download at the end of this post. Another improvement was the following of the side by the ship. In the first version, the ship follows a circle around the center of the tunnel. In the modified version, the ship follows the form of the tunnel, so you can feel the ground of the tunnel. I like it, but as the ship flies, this is not really something my project manager wanted. :>

Release version : 1.0 TunnelGL (Windows)
Alternative version : (Coming a day when I will get the time to update it)
Github : https://github.com/Aomeas/tunnelGL

Ideas for the future :
* Generate a portion with a number of sides different.
* Make a real curve
* Propulsion effect on the ship
* Redesign the ship
* Create a real music

[LudumDare] #32 – An unconventional weapon



After a full week of work, I am now able to start speaking about my entry to Ludum Dare 32 edition. This is my third participation, and as we say : Good things come in threes!
For the first time, the theme didn’t inspire me so much. I had some troubles to figure it in my game but I thought about it alot and I found a way to implement it. The game I wanted to create was a game where you need to stay in collide with a way until the end. That was the idea. I used some stuffs to help me during this LD like Trello, papers, good organization of my screens. My goal during this LD was to make a better game than the two others and to make a game which will need no tutorial (implicit tutorial was made o/ ).

For the weekend of April, 18-19, I was in my family house. So, I didn’t have my home computer but a laptop with only one screen. I brought my keyboard and mouse of course to help me a little bit with this exceptional disposition. I slept less than 6 hours, so 42h of programing + one extra hour for the release/debugging of my game.

Trello, used to keep my ideas and to follow my advancement.

For the first time, I was using EasyLD, my framework dedicated to LudumDare games. EasyLD is always in development and I changed/updated some stuffs in EasyLD during this LD. I need to commit them when I will be able to check them up. Also, I was using Drystal instead of Löve2D for the release and debugging of my game. The game works under Löve2D due to EasyLD but in a darker version. I need to check why in the following weeks but I think the error is due to the color buffer which is not free/reset. Anyway, it is not the place to figure it out. I got the time to use every functionality which were in EasyLD like MapEditor, Anim8Editor, SpriteAnimation, AreaAnimation and others! I earned a lot of time and that is why this game is the best of the three I made. But my thought is I lost a lot of time due to the no-inspiration of the theme. During the first 5 hours of the second day, I was just playing my game, thinking a little bit about it but not really passionate. Hopefully, after a shower, my mind was better and I was really motivated.

The first day, I was able to get in the first hour the spirit of my game (8 hours). I had the time to add some tweening and color effects and started to make some designs by the end of the day. The programing of the bottom path was a little bit boring (with the boss too) because of the theme. That was a good idea, and I love my sprite animations and the way to beat the boss. But the path with the tower (with the grass and the bonus) were not really an interesting idea and were just here to add a mood to my game. A story. Because I needed to have something between the beginning and the boss. Maybe a full boss fight will be better, but for this kind of game, just the upper part can make a really good game! The theme is important, that’s why.

The second day, I was starting to be bored. But thanks to the shower and my trello, I was able to do some stuffs anyway and to start to add a lot of levels (48 at the end + 1 for the boss). But the game design of some levels was a little bit repetitive. I hadn’t enough of time to program all the things I thought like a cursor for the player which throws a “boomerang” which helps you keep in collide with the path. The SFX and musics were added during this day. I was using audiotracker.py this time, with the classic SFXR. After that, I polished a little bit my game and added a titlescreen and an endscreen in the last minutes of the chrono. One thing was missing in my game : particles! I wanted to add some when you are grinding the path, with a sound. And some when the boss was dying or was hit! That could be funny! However, a lot of stuffs was made and I am really happy. The feedback are going well currently! We will see the result later.

Bonus, path (upper part) Path, tower… (bottom part)

But now, I need to focus on what I learned and what I need to focus on for the next LD.
Firstly, my graphics skills! Incredible. I never thought I will make some really nice graphics if I take the time to make it. That’s the best point I think during this LD. Thanks to AreaAnimation of EasyLD, I was able to animate easily my sprites without creating the sprite animations one by one.
Secondly, EasyLD was almost perfect! Just a bug with timer sometimes, but I solved it fast enough during the LD. Need a particles module and that will be perfect.
Thirdly, I programed more than the other LDs with at least 42h. Last time I wasn’t able due to exams. This allowed me to keep focused fully on my game o/ And had the time to play/polish it a lot.

Level Boss

Now the bad part, there are always some bad parts! And it’s better to figure them out now.
Firstly, EasyLD was almost perfect, as I said, but needed to be developed a lot yet. Some critical bugs appeared during the LD weekend. I fixed some of them, but I need to check them one by one now.
Secondly, the theme didn’t inspire me a lot. That was a problem. But I had an idea of a game. Therefore I linked the idea to the theme and this was great enough. Maybe thinking a lot on the potential theme before the LD will allow me to come up with a good idea instead of just linking the theme to the game idea I got.
Thirdly, because good things come in threes. To polish more, more and more would be better. But program a SIMPLE game. This one was a little bit too huge because of the boss part! I lost a lot of time on the bottom part of the screen. A game with just the upper screen would be better! I knew, and I tried to focus myself on one idea. I did it, almost, but because of the theme, I had two parts. So, it wasn’t a failure.

At last, I can say that a day I will be able to make a beautiful game with a beautiful game design and a beautiful story. Yes, something was missing during this LD, a Story. I need to put the spirit of the player in my game and play with it. I wasn’t able during this LD but this is my goal for my next entry (August, I will be here!).
The game is directly available on the web (Goutye.com) and my entry can be seen on the ludum dare website.
(The music disappears if you change your tab, Drystal/IFrame bug).
Just above of this paragraph, you can find the playthrough of my game and a little bit earlier, you can find the timelapse of the LD32 weekend. Hope you will like my game. Don’t hesitate to let a comment, I am always fond of advice!

Controls: Mouse (Best device, touchpad is really hard)
On the titlescreen : 1 2 3 or 4 to go directly to the world 1 2 3 or 4 if you are stuck and don’t want to try again.

End of the school year, the rushing hour!

Hello there,

The biggest part of the school year 2014-2015 just began on Monday and it will end in the middle of april (with the Ludum Dare 32 on April, 17th). A lot of thing are coming in the next weeks. If you are a little bit curious, maybe you saw that some projects are almost ended. And yes, it is the case. That is why I am writing a post about the stuffs which are coming soon!

Let’s begin with the big school year project : Implementation on GPU and optimization of some image processing algorithms (Since November 2014).
This project approaches its end (on April, 9th we got a meeting with the company named ADCIS) and the final oral presentation is planned on April, 10th in the side of ENSICAEN. We are currently writing the report (90% of is done) and we are starting the oral presentation. Which means a lot of work, because of the two orals which are coming next week! A post in this blog will close the project after April, 10th.

Another project is EasyLD! This project is not done and it will not be done before April, 17th because it is something I want to improve in the next following months. But I want to launch the first version before this date, to start LD32 with it. The remaining thing are the camera and the software for area animation! One will end before April, 10th and the other one (software) is planned for the week before the LD32 date. I am very proud of this framework and I hope it will be fine for LD. The problem is I haven’t really tested this framework. I just wrote some tests and it was ok. But maybe when I program a game, some bugs will be found. That’s why I need to test it before LD. Maybe during the holidays (starting on April, 10th).

Another ENSICAEN project is currently in development! An OpenGL game. The beginning was on March, 31st and the work is really huge. That is why EasyLD is frozen until I finish developing the OpenGL game . The problem is I am currently waiting for some parts of the game to continue to program the game (Camera for example, a big feature). It sounds possible I will need to take this task on my own if we have no commit about it from the guy who has to do it before tonight. I really love developing a game with OpenGL but I am stuck because I cannot program whole the game, even though I am able to do it. I have to share the work, for the sake of the group. That is why I will make an OpenGL game another time on my own after LD32. One thing to know, the end date is on April, 7th just a week after the beginning (And we currently have no camera. I am gonna be in a hurry during this weekend). (If the result of the game ends in a beautiful game, I will post it here, but if it’s not the case, I will make it better before this!)

So, as you can see, it will not be really easy for me to be the best on all of these projects. Moreover I have some exams during this week. Some of them are done easily enough. Two more tomorrow and I will be able to work on my projects!

Even though it is a really huge week for work, I am really happy to do it and I love it. I hope all of these projects will end as perfectly as possible! I will try! :D