Hi, welcome to
jackass our post mortem for Bottled Worlds!
You can watch the trailer here.
I came over to Itamar and Mati’s house with a laptop. We stayed up late and played SCP Containtment Breach. Nothing special.
We also replayed our warmup game and found it was infested with bugs.
We all woke up at 7, saw the theme and got cracking.
After around an hour of brainstorming, we came up with a cute idea: you’re a tiny ninja, and it’s raining. You have to jump between rain drops and reach the sky.
Itamar designed the ninja and Mati did the raindrops.
It was pretty appealing at first, but we dropped the idea after like an hour of work, since it just didn’t last long. It grew boring and tedious.
You can still play it here, though. (older version than the screenshot ^)
We then scrapped the idea. Mati and I started brainstorming about the next idea while Itamar drew this:
The next idea was about you being a guy in a tiny city, and you just need to crush and destroy everything before their choppers take you out.
Once again, it was a boring game. Itamar showed us his bottle and said, “let’s make it a platformer.”
At first I resented the idea, since our last Ludum Dare entry was also a platformer, and they’re getting pretty repetitive.
But, eventually I gave up and we just started working on it.
It was supposed to be a placeholder, but Mati and Itamar really liked it, so we left it in.
Mati started working on tiles and Itamar started working on enemies. After about 2 hours of work, we had our first prototype:
Also, this monstrosity:
We ordered some pizza and threw it at each other so we’ll totally look indie.
After a few more hours of work, we finally had the first level almost finished. We plopped in some Rayman Origins music to help visualize what kind of mood we’d like the game to have and made a progress video: (timezones, timezones, so it says Apr 21.)
Notice the red angry rectangles. They’re aaaaaangry.
From here things got a lot harder, since we had school again (yep, we’re young) so we could only work together over Skype. Also Itamar constantly resisted launching Dota 2.
Work on the world tiles, backgrounds and enemies has begun. I started working on the health system. We already had the basic grassy tiles layout, so we knew how we were going to do the others.
(aaaaangry red rectangle!)
There were plenty of other tiles we didn’t use, but I won’t put them here since they were just ugly.
Here are some enemies for reference:
I started working on joystick support. It didn’t come out too well but it worked fine.
I also tweaked some of the enemies’ AI using… raycasting! (angelic choir sounds)
This was the first time I used this method in Game Maker and I’m really proud of how it came out.
I won’t go very in-depth about it, but I’ll explain it briefly;
The enemies check if they have a direct line of sight with the player. (red line if no, blue line if yes)
If they don’t, they start sending rays in 360 angles. If the longest ray (the one who comes in collision with a wall) has a distance to the player smaller than a predefined value, the enemy takes that ray as a reference.
If they do, the game simply does some simple random math to calculate a good shooting position and uses that point as a reference.
The enemy then sends out a ray from the reference point (black line) to the player to check for collision. If there’s no collision there, it simply moves to the point.
If there is a collision then it re-calculates the point. This is done so the enemy can get a good shooting angle that will definitely hit the player (if he doesn’t dodge it).
It made the enemies much more challenging and life-like. This was a big improvement from Lonebot, where the bats would simply charge you with some curved angles and then slow down. They would even go through walls!
We also added the health system and added a game over menu that would let the player restart (or crash if he goes to the menu)
We finished the basic engine and all of the enemies, it was time to build on top of it.
Level design day! This day mostly consisted of me adding the final elements and Itamar and Mati making the levels.
Making the levels was very, very tedious. Game Maker’s built-in room editor was really giving us a hard time and felt very incompatible with our tiles.
Next time we’ll just code our own external level editor…
Anyway, here’s a level from inside the editor:
I also worked on the main menu and the intro and outro cutscenes.
We worked past midnight and our time was running out… But eventually, we were finished with the levels!
Unfourtantly there wasn’t much time left and we were very tired, so we just compiled the game and uploaded it here.
And thus, Bottled Worlds was finished.
What went right?
- Polish. The game had it’s aesthetics and it felt very nice.
- Graphics. I feel like we’ve outdone ourselves from our last entry. The enemies successfully blend with the level tiles.
- Smoothness. The game doesn’t slow you down at certain parts and lets you run through the entire game, if you’d like.
- Fun! We had tons of fun beating the tiny creatures to pulp with our pointy nail head. We’re glad that our game puts emphasis on that.
- Easy work environment. We used Dropbox for this game and everything moved much faster and it made life easier. We didn’t have to spend time over sending stuff over Skype or constantly pushing out new prototype releases to test.
What went wrong? D:
- Repetition. The game grows repetitive at some points.
- Annoying trial & error. Dying in the game will restart the entire level. Normally after dying the player would remember what he did wrong and would correct it next time, but dying at the end of the level lets the player forget what he did wrong til he gets to that point again, and increases the chances of failing again.
- BUGS! The game. It’s buggy. Players will sometimes find themselves clipping through walls or flying out of the level, which really takes away some of the game’s immersion.
- Pressure! Once again, we felt how the pressure builds up on top of us as our time ran out. The level design period made things go very slowly, and made us very nervous. It made us miss some features and of course, not fix the bugs.
- No mac/linux port. :)
I can’t say much about this, but here’s a screenshot instead!
(it also won’t have as many bugs!)
Thanks for the read!