Every now and then I design a level or a new mechanic live through Twitch, an online streaming service.
Tomorrow we are going to try a new kind of level for the game that is very puzzly and might prove interesting!
Like I always do, a disclaimer: I am going to be *designing* the game, not giving a lecture, so there is no guarantee that we’ll get awesome results, but you’ll see in full honesty how I design games.
Date is wednesday the 6th of January, 13:00 PST at:
Today I am going to try to design an Ernesto boss live, through Twitch.
For the past months I’ve been occasionally streaming myself doing level design for Ernesto only for the local dev community, but it was always small levels. Today I feel like it’d be fun to do a boss.
How is the boss going to work?
A couple years ago I participated of a Depth Jam with Marc Ten Bosch, Chris Hecker and Jonathan Blow, where we discussed deep game design issues of our games. There I learned from Jon the concept of “Forward Game Design”, which consists of thoroughly exploring interesting consequences of your current mechanics instead of planning levels and changing your mechanics to fit them (which may be called “designing backwards”).
So far, it’s been pretty successful for Ernesto and I don’t think there is a better way to do design for it. But how does it work to do forward game design everyday?
For me and Ernesto, it means sitting down, proposing level layouts semi-randomly (there’s an instinctual component there) and then playing as if I were a player, trying to solve it and see if it’s solvable and interesting to play. This technique feels very weird at first and it seems like it is completely random, but it turns out it yields results pretty often, and the levels I made this way are interesting, uses the mechanics deeply and I could have never come up with just by brainstorming.
So for this boss, I have a small idea but I don’t know the details yet. My plan is to sit down, try it and adapt to whatever happens then.
How do I know I’ll make a good boss that way?
I don’t. Part of doing forward game design is being flexible, accepting that sometimes you’ll end up with a great level, a poor level, or no level at all. If you come watch don’t expect a glamorous stroke-of-genius performance; you’ll see me flail around until I hit a gold vein or give up. Maybe we’ll end up doing something entirely different.
Why would I do this?
The most I learned from more experienced designers is by watching them work and sitting with them to help them, not by talks or design books, which are often a (wrong) rationalization of their work or are missing key information that the designer deemed irrelevant or not developed enough to include.
I only started to apply this forward game design and I am enthusiastic about the results, so I believe it’s useful to share it even if it breaks down any romantic idealizations of how I create games.
So something I can guarantee is that you’ll see me design exactly as I design every day, which I wish I could see from other designers as well!
Disclaimer: it’s the first time I twitch in english which is my second language and my brain will be extra busy with that. So please be patient with my language and my slowed down thought process :)
Note: people not in the US, if while watching twitch you have constant freezes, you can use tardsplaya, which increases the delay but eliminates the stuttering.
For the past month we’ve been adding tons of new images and animations into the game using Flash movieclips, which make the game look great.
However, at this time we have 2000+ frames and we need to cache them into bitmaps at loading time in order to get a solid 30 fps during gameplay. We do this in runtime because we want to get the best possible quality for our sprites in any of the wild variety of PC monitor resolutions out there and rendering native vector graphics gives you the best resizing quality, contrary to just resizing a static image.
This came at a very high cost: loading the game took 8 seconds. Now even if this sound okay for a game, it is very bad for development, because we re-run the game very frequently and waiting that long has an accumulative cost of time, lost focus, etc. We needed some caching strategy.
Storing the rendered frames into disk sounded like a good way to go about it as the resolution of a PC tends to be stable once you know it. Unfortunately, Adobe AIR does not offer a way of loading pngs in a synchronous way and the way Ernesto works is not compatible with assigning stuff in events (I am not even using the DisplayList). Loading pngs by hand is so slow it is even worse than prerendering the Movieclips into bitmaps every time. I was stumped.
But recently I came upon an article that pointed out one thing: BitmapData can do getPixels/setPixels using ByteArrays! So what I am doing now is storing the raw bitmap information into disk using getPixels and loading it using setPixels. The gain was almost 10x!
My times for ~2000 frames (actually ~370 files, as I am storing individual animation frames of the same Movieclip in the same file):
It’s been a while since we made an update because of big changes both technical and in game design:
Archipielago
The game is getting bigger and thus we needed to have worlds to place all the dungeons and buildings. We implemented a “zoomed out” map and now you can walk around in a bird’s view of Ernesto’s brand new islands.
(graphics are work in progress)
A Puzzle Game with Crawler Elements
The early prototype of Ernesto was a crawler with puzzle elements, but its alignment has shifted and now it’s more of a puzzle game with crawler elements. However, levels feature multiple solutions and tradeoffs. Right now the game has 50 levels of unique ideas and we are just getting started!
Stuff we are working on now
Jeremías keeps improving the visuals. Next build will feature more animations as well because they seem to work great to communicate gameplay in this game.
Narrative! But not in the traditional sense…
More levels, more bosses, more interesting mechanics.
Last weeked we showed Ernesto at PAX within the wonderful Megabooth initiative. For this end, we made a special, self-contained demo world that can be finished in a few minutes, along many improvements and new art assets.
I manned the booth myself for 4 days but took frequent breaks so in the end I was exhausted but not in pain, thanks to Ernesto being such a hands-off game: people could pick it up and figure out what to do without me guiding them, even though the core mechanic is different from other RPGs/Crawlers.
However, I happened to notice that the game is too visually static when you are not playing, but Chris Hecker, dev of the wonderful Spy Party, suggested I implement an “attract mode” where the computer plays the game by itself; so I did, mostly in the very show floor:
It was very rewarding to see most people pick up the game, figure it out, solve puzzles and struggle against the tricky bosses until beating the demo. It is certainly a departure from my previous games, which were always a bit less accesible. I decided to let everyone who beat the demo put a sticker on the sign, a privilege some people used to troll my name (which was misspelled by the organization, *sigh*):
Ernesto is beginning to take shape and solidifying into an actual game, and we are starting to work on something big that we believe will make it a way better game. We want to try a bunch of ideas as well, so I am very happy about being working on it and the reception it had at PAX make me very positive about the future…
It was also a good opportunity to meet old friends, let them play my game and also make new friends:
Camera got blurry at the awesomeness: Droquen (Starseed Pilgrim), Marc Ten Bosch (Miegakure) and Jonathan Blow (Braid, Witness).
On the left, C418 (made music for Minecraft), center: Alexander Bruce (Antichamber).
Zach Gage (Ridiculous Fishing)
With Oscar Velzi, from Double Bear, having some mate. Of course he is argentine as well.
Beta players, expect the latest build in your inbox soon!
As seen in the screenshot, we are moving away from pixel art into a more expressive illustration style. It can’t be seen in a screeshot but: animations!
Jeremias is still drawing all the assets of the game, but we are happy to depart from pixel art. Specially me, given that every single game I made so far had pixel art graphics!
Worlds of Ernesto
The other big change is that there are several worlds to play, each pretty small in size instead of a big dungeon that takes forever to complete. It has become more important to do the best you can in each level, though!
The WIP world selector:
But this is not all:
Roles: Ernesto can also be a knight, a engineer and even a vampire! But they must be found first.
I simplified several mechanics so the focus has grown closer to navigating the grid instead of worrying so much about what each thing does.
We skipped updates because we are working on two *big* changes to the game, but I don’t want to let another week go without an update or a beta build!
No spoilers, but interesting things happened lately with the game:
XP progression is actually back, but in a simpler form: Ernesto goes up a level every 100 XP points. I got rid of most of the XP inflation: monsters that give more XP are more difficult to kill, not tougher! So mass slaughter gets harder as you progress into the game, making a progressive XP curve unnecessary. As a bonus, XP points feel like a score.
Several new monsters with novel behavior and new levels to go with them. There is more variance in the shape of the levels, affecting their flow. Old monsters adjusted as well, making some more interesting.
Permanent unlockables! Vaults are now challenge levels that unlock pretty powerful items.
Reworked the chain system. I am not totally satisfied yet, as I want the XP value of each monster to affect the chain payoff, but I believe it feels better than before.
Level generation is smarter now, altough I suspect this will improve massively before release.
Beta players: I will release the build later today or tomorrow, depending on how many bugs I find. However, since this is an intermediate build, I will not follow up on my intent of making a well balanced playable!