Hi there, dear reader ! I’m glad to see you here ! This is probably the first time I see you here so let me introduce myself.
My name is Batora07 and I’m a french newbie Game dev’ specialized in programming. So please, don’t mind the gazillions grammar mistakes, my english is a bit rusty x).
In this post I’ll expose to you what went right and wrong with the game our team for the Global Game Jam 2017 made this year : Side Tricks – Pedal Your Train.
But first of all, what is Side Tricks ?
Our game is a classical mobile runner developped with Unity 5.3 and inspired by the mobile game Alto’s Adventure and it was released last month as a free recreational made game. It « runs » both on Android and Windows devices.
You play as the
silver line-surfer, your job is to surf the imaginary waves of electric lines while people pedal to move the train forward.
As the surfer, you have to entertain them with rad tricks so they’re motivated to pedal faster and go as far as possible.
If you have ever traveled to France and tried our train network, the « SNCF », I’m sure you had the feeling that pedaling your own train to go where you wanted was more efficient than just wait for your ultra-delayed trains 😉 . Our rough design idea for the game came from just that feeling. But also because the theme of the Global Game Jam this year was « Waves ».
Also, you probably did this yourself as a kid (or maybe even later :p) : following the electrical lines with your fingers and just pretend your hand is some guy/girl that surf a wave.
So, now let’s get straight to the point with the postmortem of our game : What went right, and what went wrong ? :
What Went Right :
1- The Art
Actually, if you’re new to the concept of the Global Game Jam, there is a kind of an achievement system for the game devs that is called the « diversifiers ». This year, one of the diversifier was called « Old Masters ». There is absolutely nothing to gain by doing these diversifiers except for the fun :).
Julie, our graphic artist was inspired by « Old Master » Norman Wilkinson’s work (not the razor guy obviously 😉 ).
Here is one of his artwork that inspired Julie:
I personnaly think our art is one of the best point from our game. It is fresh and cute and Julie succeeded in doing all the graphical assets in just 2 days so really, congrats’ to her !
Here are some of my favorite assets she did for our game :
2- The Parallax Scrolling effect
My first occupation during this project was to create the parallax scrolling effect for our runner gameplay. I created the backgrounds and the different planes that needed to use this effect as a « quad » game object, a quadrilateral mesh game object. The shader associated with this game object was alpha blended (Shader -> Mobile -> Particles -> Alpha Blended), and then I attached the graphical asset for the background to this quad mesh. This allowed the background to revolve infinitely around himself (just like a sphere).
To know more about the code behind the scrolling effect, I invite you to take a sneak peek at the scripts files in the folder Decors in this github repo : click here.
I think the job on the parallax effect was fairly good, and it nailed the feeling of movement from the train.
3- A good sense of « camaraderie »
This GGJ was my first jam… ever. And it was truly a superb experience that I enjoyed over this amazing week-end. This was mostly allowed by the common goal we had, and I think there was a great alchemy in this group.
Me : « Woops, I missclicked for my trick and now my character is heading for the electrical line, head first, damn… »
Travelers : « BOUUUHOUUUH ! » « Pfft ! »
or instead :
Me : »Yay, I succeeded in making two tricks in a row »
Travelers : « Yeah ! » « Youhouuuuh ! » « Wow ! »
Marie, our sound designer really made funny sound effects that you can hear when you succeed or fail miserably your tricks. And I giggle every time I hear them ;).
5-Animations and wagon mechanic
When you fail a trick two times in a row, a wagon is decoupling from the rest of the train. But before that, the animation of the travellers change, and if you don’t motivate them enough they are bored and stop pedaling.
The mechanic behind our game over is quite strange and amusing, and
I think Thibault and Loriane succeeded both in the animation of the bored travellers and the decoupling of the wagon. I don’t know why but every time I see a traveller being bored as f*** and boo-ing me I chuckle… even if I know that pretty much means I suck at my own game… yeah I’m a weird fella.
What Went Wrong :
Here, enjoy a funny video we made while our game was totally broken (okay, he is still broken af but… we had only two days é__è)
1- The resize of the DOOOOOOM !
Seriously guys, next time we really should all work with the same screen resolution when making a mobile game… that would REALLY avoid us some… unexplainable problems (just see the video above 😉 )
2- Using Git with people not very well versed in it with only two days of dev, … and yes, it crashed… twice
At the beginning of the project I suggested we all worked on our own feature branches on git hub. Well… that was quite a baaaaad idea.
Don’t take me wrong, I really like git and all, but this is not the first time I have problems with it in crunch mode with other devs that are not quite accustomed with it.
At some point of the dev, probably after 18 hours of programing in crunch mode, we totally broke the repo…
And we made it crash twice.
What happened ? Actually I’m still not really sure myself, but from what I understood :
-Victor tried to merge his branch with the master branch…
-while I was doing a merge with the master branch myself
-and Thibault was trying to pull at the exact same moment… really that was a fucked up timing x).
So we made a clean repo almost 45 minutes after trying to debug git, with no avail…
The second crash happened few hours later, but this time I was completely lost (and haven’t sleep for a whole day)…
3- Electrical pole strike back…
So, at last, what the fuck happened with the poles, completely messing with the cables ? To explain what happened I must elaborate a bit about how we implemented the pseudo-procedural pole generation. So please bear with me for a moment ^^ (if you absolutely don’t care about boring programming stuff you can just skip ahead :p).
We created a set of fixed poles, with a constant number of poles : 7.
So, at the start of the scene, the first seven poles you’ll see are fixed poles on a scrolling plane.
Every time the « second » pole (pole 2), the one holding the cable from his left side, has a collision with the left side of the camera (on which we attached a box collider), the « first » pole (pole 1, the one holding the cable from his right side) completely disappear, and we also remove the cable between Pole 1 and Pole 2.
We then update the set, and pole 2 becomes the new pole 1. Pole 3, the new pole 2, etc…
Pole 1 is put back at the end of the set, and becomes the ending pole (pole 7) with a new random height and a new random X position separating him with the pole he will follow on the scrolling plane.
Pole 6 is then connected with an electrical line on his left side with pole 5 and now on his right side with an electrical line with pole.
The moment he is inserted, we add the line between pole 6 and pole 7…
And that’s it !
That’s pretty much how we managed to do an infinite loop with only seven poles, and deceive the player that he is on a wild infinite trip…
How did we get that awkward bug with the lines doing completely crazy stuff ?
Well that’s really a simple problem, that only took 4 minutes to solve after we got the video you saw above ;).
Actually, the bug appeared on the first place because we changed the asset of the pole prefab . But why did it completely crashed the game like that ?
Simply because the link of the first pole (the one on which I applied the new asset) was broken on the set in the inspector panel. I just replaced the old instances of poles by the new prefab asset and it worked pretty well.
But then a new problem appeared after few tests. Even with the new prefab asset, sometimes we got the same unexpected behaviour as seen in the video.
Once again, the fix was easy to find, but a bit quirky after a whole day without sleeping : that was because we placed the first pole outside of the camera… and GG that pretty much fucked everything up…
Once it was resolved the game (almost) worked like a charm… well until a newer problem show his nose :/…
4- Hi ! I’m an electrical surfer and I’m HiiiIiigh as F*** !~
So I still don’t get why we got this bug in the first place, since I haven’t touched the Surfer script. Apparently, sometimes the rigidbody 2D of the Surfer completely messes with the cables rigidbody 2D, making him falling to the ground, on the same plane that the train… And that’s problematic, because I absolutely don’t get how the Surfer script is working (because okay we had 2 days to code but Quick and Dirty coding without any comments is really sh*tty coding… but oh well, so did I hadn’t the time to add comments … :O ).
So, just before our presentation to our fellow game devs from the Global Gam Jam site, Thibault made a fix of his script that really worked well and we had ZERO bug while we were presenting our game… However,…
5- Our game is not finished… and probably never will be… oh, and yes, he’s buggy as hell :O
Yeah, the thing is, Thibault fixed the bug of the Surfer falling below the lines… but he did it on Victor‘s computer. And even after the GGJ ended I chatted with him on discord, but he (Victor) still hasn’t send me the fix… no idea why (yeah I know it sucks, especially after the funny week-end we had :/) and the version of the game we put on the GGJ site was before the fix… so I’m a bit sad to present to you our game as it is… but that’s the law of deadlines to you. And if I wrote this postmortem, it’s also to move on, back on my own projects.
So if you’re still interested, even after I warned you of the awful bugs you may encounter I invite you to go to these pages to try the version you may enjoy the most :
Conclusion : Speed up with the prototype. I mean, seriously… make it quick(er than us) ! ( ͡° ͜ʖ ͡°)
To conclude this postmortem blog post, I’d say that if you want to create a game in such a short time span (2 days) you really should try to make a prototype the fastest as you can. That will really help you to gain precious time later on, on the last day for instance.
I think we really missed this important step of doing the prototype the earliest as possible, but I’m still glad I had this experience, and I will cherish the memories of this weekend as my first (and I hope not last) « fun crunch time game dev », I met awesome people there and I really hope I’ll quickly participate to another Game Jam ! 🙂
Thank you really much, dear reader, to your efforts for reading my long post and bad english, and I leave you with this awesome video of Extra Credits about the joy of making games without the constraints of professional game dev :
Bye then, Mata Ne, またね !