Ludum Dare 36
The Theme is:
Ancient Technology

LD36 has ended!
Well done to everyone who took part.
1912 Amazing Games!

Posts Tagged ‘gif’

Mead Boy: Game Feel and Level Design

Posted by (twitter: @blubberquark)
Tuesday, September 6th, 2016 8:08 am

logo

play Mead Boy or read on:

This is not a post-mortem of the development process, but an explanation of the game design and what makes it tick.

Game Design

Mead Boy is a small platformer where your goal is to drink all the mead. The more mead you drink, the more laggy your controls get. Alcohol wears off slowly and linearly, just like real life. Also like in real life, a single drink impacts your reflexes enough to make many tasks perceivably more difficult. A tenth of a second of lag is already noticeable. In order to make players not just wait out the effects of the alcohol, and progress slowly, there is hunger clock and a time-based scoring system. Food pickups set back the hunger clock, and Gold pickups increase the score. One per mille of BAC creates a lag of one second and takes ten seconds to wear off. This should incentivise players to look for food while stillslightly drunk. Levels are small and take under a minute to complete. Levels should pose little challenge “sober”.

Each level represents a real city from the Viking age. There is an overworld map that shows you where the city is, and how a river connects it to the sea. There is some looting and pillaging, but no combat or violence against people shown.

fortress2016-09-06T14_55_18

fortress2016-09-06T14_55_28

 

 

Game Feel

Speed and Momentum

fortress2016-09-06T14_54_07

Mead boy is a game about going right, going fast, picking up speed, and jumping far. (At least when you’re sober. When you are drunk, you pick up speed and go too fast. Your first instinct if the character is not responding right away is to hit the buttons harder.) There are only three buttons needed to control Mead Boy: Left, Right, Jump.

Mead Boy responds to button presses instantly, but he keeps accelerating until he reaches a top speed of 5.5 pixels per frame. When you stop pressing the button, he decelerates exponentially. At speeds below 1 px/frame he stops completely (like stiction compared friction). This way there is no “long tail” of slow sliding after landing a jump, which feels weird and floaty and may make you fall off a cliff when you don’t expect it. The following diagram shows a plot of speed and button presses, where you can see a long attack and a quick release phase:

diag1

Jumping

fortress2016-09-06T14_54_19

Jumps are always the same height, and there is no way to increase or reduce the jump height. Like Mario or Sonic, Mead boy goes right fast. Mead Boy is not Luigi or Mega Man. The Camera only scrolls on the left-right axis, in order to de-emphasise going up or down.

No Turning on a Dime

Mead Boy can come to a standstill relatively fast, but turning around is harder: When he is still moving into the opposite direction, the slow acceleration takes longer than simply stopping first and then accelerating into the other direction. This makes the momentum feel “weightier”, but it is also kind of frustrating. Mead Boy is running really fast; you can’t just turn around. Well, now you know and can exploit the behaviour for speed running!

diag2

fortress2016-09-06T15_04_09

 

 

Level Design

play Mead Boy before you get spoiled!

Haithabu

haithabu level

Haithabu Level – Click to see at full resolution

This is a kind of tutorial and sandbox level. There are only three units of alcohol and enough food. You have to jump out of some pits, but there is no way to drown or to get stuck. You spawn on the left and have to go right. You can also go back left. You have to use both running and jumping controls, so I know you can use them when you advance to the next level.

How the level fits with the theme: This level is inspired by the Viking city of Haithabu. The destruction of Haithabu marked the end of the Viking age. Haithabu is your home base and a safe place. That’s why there is no longship. You arrived on foot. Haithabu is your home.

Lindisfarne

lindisfarne level

Lindisfarne – Click to see at full resolution

The second level is much bigger. There is only water on the left and land on the right. After the first mead pickup, there are two food items that should reset your hunger clock. The only “dangerous” jump comes right after: You can fall and drown, and you might still be slightly drunk at this point. You have to make a leap of faith. After the next jump, you are free to take all the gold and set the buildings on fire. Jumping to get the gold or over the small bump after the cathedral may be tricky due to alcohol, but you can safely retry: No real challenge.

How it fits the historical theme: The Viking raid of the Lindisfarne monastery marked the beginning of the Viking age. There are stone buildings and churches that kind of look like an English monastery of the era.

London

london level

London – Click to see at full resolution

This was the first level I had designed. There is more alcohol, the same amount of food, and you have to jump over a gap to get food. The last bit on the right requires you to jump onto a small platform after two units of alcohol. Definitely harder than Lindisfarne, but not much.

Historical Inspiration: The building on the right is a mash-up between the tower bridge and the tower of London. London was raided by Vikings multiple times. The tower bridge was not there during the Viking age, please forgive my anachronism.

Paris

paris level

Paris – Click to see full resolution

Paris is a step up in challenge. There are two deadly jumps in the beginning, lots of going up and down and the buildings you torch are relatively small. You have to go back and forth to collect all the food or gold.

The Lore: Paris was attacked by Vikings a couple of times under Charlemagne. Once they paid ransom, once they didn’t. Guess how that turned out. Also red wine and the Eiffel tower (super anachronism) to make sure you get that it’s Paris.

Hamburg

hamburg level

Hamburg – Click to see full resolution

Hamburg is the last and hardest level. It has the most alcohol, lots of water to drown in, and gaps where you have to jump right and up or down. I expect you to lose this on the first try. Nonetheless you can make many jumps drunk. Losing is fun!

History: Hamburg is a port city and a member of the Hanse. It has trading post houses right in the harbor. Also a dike. Also vikings.

play Mead Boy and comment please

(more…)

Desert Strife Post-Mortem

Posted by
Friday, September 2nd, 2016 12:28 am

One more jam, one more post-mortem. Such is the way of life (for me at least!)

GIFFIG

Design

Checked out the theme as it was announced (4.00 am around here). I knew what was coming based on the previous voting rounds, but no idea sprang up immediately (which is usually the case to be honest).

The brainstorming began officially in the next morning. Ranquil joined the storm later at which point all I had was a vague strategy game concept about scavenging and stealing technology. Movement of armies would have taken place on a world map and the action on a separate battle map. In the next few hours I managed to simplify the idea down to a single map close to the style of Advance Wars. Nine hours had already passed since the start of the jam so we set out to work with minimal fuss.

Programming

Light turn-based strategy isn’t the most demanding of genres and I had in fact created a similar prototype some 4 years ago. Unfortunately, the half-life of a codebase is way less than that and after 5 minutes of perusing I decided to rewrite the whole thing from scratch. That was a good call. The only system I reused was an A* pathfinding system, which I’ve been using for years in other projects including the last few jams.

No severe problems on this front, just a lot of work.

Graphics

All the problems piled on the graphics artist this time. First off, Ranquil had been working for the whole summer on other projects, didn’t really like the genre and lastly the drawing table broke when only one asset, the character sprite and walking animation, had been finished.

Due to this calamity all non-essential assets were cut, among these battle animations (and any possibility of a separate battle screen). Ranquil shifted focus to other tasks, like audio research (and found a great song right away!). Luckily the drawing board issue was resolved by Monday and the last essential assets, like the desert ground tile and the main menu background image, were made and implemented. Despite the last day push some programmer art slipped in. (I take what I can get!)

Polish

With the game itself feature complete and playable only minor tasks remained: Audio implementation, main menu and tutorial. Once again, nothing I hadn’t done before, although for a jam tutorial this one takes the cake! The whole thing was completed with 2 hours to spare, a new record that. The building and uploading process took about an hour more for the tired mind.

Conclusions

Never have had this grave a production setback before, yet thanks to the small asset requirements of the genre the end product didn’t suffer significantly. The 72-hour jam is much more relaxed than the 48 hour counterpart with time for sleeping and breaks. I like that.

Had a good time and, once again, felt genuinely happy about the accomplishment. Now that is a feeling like no other.

 

Play it here!

And have a nice, relaxing post-jam life!

Desert Strife Desktop Builds

Posted by
Wednesday, August 31st, 2016 2:20 am

Windows, Mac and Linux builds are in.

Here’s a GIF for good measure:
SAME OLD

Play it here!

Desert Strife in motion

Posted by
Tuesday, August 30th, 2016 4:56 am

As promised here’s a new GIF from the release version!

NEW STUFF!

One of my programmer art assets slipped in, can you spot it?

Play it here!

Progress Report (67 hours in) – Desert Strife is done!

Posted by
Monday, August 29th, 2016 7:07 pm

The title says it all. Time for celebrations! Play it here!

Title

Too tired to make a new GIF, this one is current enough…

"OLD RECORD!

Time to get some Z’s. Gotta catch a train tomorrow!

Have fun!

Progress Report (60 hours in)

Posted by
Monday, August 29th, 2016 1:03 pm

Feature complete! After trials and tribulations we managed to create and implement all required visuals and even audio. What a craft!

Take a gander. It is a long one this.
"156 seconds. NEW RECORD!

Stay tuned for the real deal. Only main menu and tutorial to go. Never had time for a tutorial before; exciting, right!

Progress Report (39 hours in)

Posted by
Sunday, August 28th, 2016 4:33 pm

Crunching tasks. Small GUI tweaks this time, with bug fixes and gameplay balancing.

110s GIF. PATIENT ENOUGH?

Playtesting, audio-visuals and main menu left for tomorrow. Should be doable.

Progress Report (35 hours in)

Posted by
Sunday, August 28th, 2016 12:49 pm

Loads of progress in the programming space. Improved AI, initial GUI, and, most importantly, ancient technology are all in. The gameplay will take a lot of tweaking to get right though. At the moment the difference between winning and losing comes mostly down to luck. That is not by design, believe me.

a GIF a Plenty

The graphics are still temp, partly due to our graphics artist running into dire technical difficulties (drawing tablet broke!). That issue should be resolved by tomorrow. We’ll see if there’s enough time to go by!

Rough interface in the working, levels galore.

Posted by (twitter: @tselmek)
Sunday, August 28th, 2016 11:37 am

Got a rough base for a menu and a level selection screen as well as sketches of what the first tutorial levels could look like. Will leave them as is for now and improve them tomorrow, let’s make more levels now.

View post on imgur.com

Progress Report (23 hours in)

Posted by
Sunday, August 28th, 2016 1:25 am

Where did those 8 hours go? Oh right… This human body requires respite and restoration.

Well yesterday’s AI problems are no more. Took less than half an hour to sort it out (shuffled the hacks around). Not that it is any smart yet, but at least it provides a proper fight.

GIF-JIF-JAIF

Next up the titular ancient technologies!

Knowledge!

Posted by (twitter: @rhythm_lynx)
Saturday, August 27th, 2016 6:27 pm

First day at the museum and the boss is sick. Guess you’ll have to improvise!

output_dxbeqf

Progress is slowly being made

Posted by (twitter: @tselmek)
Saturday, August 27th, 2016 5:21 pm

Took us a lot of time to find a not-too-fancy idea, here’s our progress so far.

View post on imgur.com

Progress Report (15 hours in)

Posted by
Saturday, August 27th, 2016 4:21 pm

Some proper graphics are in. Unfortunately the AI pathfinding gave me some issues so that will have to wait for the next GIF.

GIF-COHOLIC

More on them problems tomorrow. Staying up for the last two hours was a mistake…

Progress Report (9 hours in)

Posted by
Saturday, August 27th, 2016 10:11 am

Anyone recognize the inspiration yet?

GIF-TASTIC

The graphics are very much temp at the moment. Luckily I’m not in charge of the final visuals.

Transformagician Level Generation and Design

Posted by
Tuesday, May 3rd, 2016 12:42 am

"ANOTHER

I already touched upon the level generation in the Developer commentary video,
but that’s not enough info now is it! Here’s some more…

Tiles

One of the easiest ways to construct a virtual environment is to use tiles.
For me the decision to go with the technique was made even easier by already having an old tilemapping system laying around.
It was a bit rusty, but a few hours of mangling put it straight.

Sets

WallAndFloors

The tile graphics are as simple as possible. There’s a wall and there’s a floor.

I of course only implemented these assets as they were made by Ranquil. Pay special attention to the bump mapping!

Reading

The level is generated from an xml file. Here’s a little example:

<Ship type="TestMap">
 , , , , , , , , ,
 , . w . h . w . ,
 , . . . . . . . ,
 , . w . p . w . ,
 , . w w w w w . ,
 , . . . . . . . ,
 , . . . e . . . ,
 , . . . . . . . ,
 , , , , , , , , ,
 </Ship>

TestLevel

There are a few oddities right off the bat. The XML element is called a ship as that’s what the original project had, spaceships. The map is also flipped around as unity XYZ coordinates don’t quite match with the XY coordinates of the map file.

One nifty feature in the generator is spawning random rooms to specific positions on the map. The rooms themselves are defined in the same way as the maps.

<Room name="roomD" loot_a="0,1" enemy_a="2,6">
 w w w w . w w w w
 w . . . . . . . w
 w . w . w . w . .
 w . . . . . . . w
 . . w . o . w . .
 w . . . . . . . w
 w . w . w . w . .
 w . . . . . . . w
 w w w w . w w w w
 </Room>

And rooms areas are outlined with the characters R (room start position) and r (room limits).

 c c w c c c c c , , , , ,
 c c c w c R r r r r r r ,
 o c c c c r r r r r r r ,
 c c w c c r r r r r r r ,
 c c c w c r r r r r r r c
 c w c c c r r r r r r r c
 c c w c c r r r r r r r c
 c c c c c r r r r r r r c
 o c w c c r r r r r r r c
 c c c w c r r r r r r r c
 c c c c c c c c c c c c c
 , , , , , , c c c c c c c

(excerpt from a bigger map)

You can see the room randomization featured in the GIF.

Writing

Designing maps in black and white is kind of like programming in vanilla notepad, no syntax highlighting, no nothing. In other words clumsy and crude.

This issue can be resolved with conditional formatting in a spreadsheet (in this case Libre Office). Compare and contrast, the text file version:

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
 , W w w w w w w , , , , , , , , , , , , , , , , , , , , , w c c c c c , , , ,
 , w p p . . . w , , , , , , , , , , , , , , , , , , , , , w c o c o c , , , ,
 , w p p w w . . c c c c c c c c c c c c c c c c c c c c c c c c c c c , , , ,
 , w . w R r r r r c c c c c c R r r r r r r r r c R r r r c w w , , c , , , ,
 , w . w r r r r r c , w c , c r r r r r r r r r c r r r r c , , , , c , , , ,
 , w . . r r r r r c , w c , c r r r r r r r r r c r r r r c , , , w c w , , ,
 , w w . r r r r r c , w c , c r r r r r r r r r c r r r r c , , , w c w , c ,
 , , , c r r r r r c c c c c c r r r r r r r r r c r r r r c , , , w c c c c ,
 , , , c r r r r r c c , w c c r r r r r r r r r c r r r r c , , , w c w , c ,
 , , , c r r r r r c o , w o c r r r r r r r r r c r r r r c , , , w c w , , ,
 , , , c r r r r r c c , w c c r r r r r r r r r c r r r r c , , , , c , , , ,
 w c c c c c c c c c c c c c c r r r r r r r r r c r r r r c , , , , c , , , ,
 , c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c , , , ,
 w c R r r r r r r r r r c c c c c R r r r r r r w c c R r r r r r c , , , , ,
 , c r r r r r r r r r r c c c c c r r r r r r r w c c r r r r r r c , , , , ,
 w c r r r r r r r r r r c c c c c r r r r r r r c c w r r r r r r c , , , , ,
 , c r r r r r r r r r r c c c c c r r r r r r r c c w r r r r r r c , , , , ,
 w c r r r r r r r r r r c c c c c r r r r r r r c c c r r r r r r c , , , , ,
 , c r r c c c c c c c c c c c w c r r r r r r r c w c r r r r r r c , , , , ,
 w c r r c w c w c w c w c c c w c c c c c c c c c w c r r r r r r c , , , , ,
 , , r r c c c c c c c c c c c w c R r r r r r r c w c r r r r r r c , , , , ,
 , , r r c w c w c w c w c c c c c r r r r r r r c c c r r r r r r c , , , , ,
 , , r r c o c o c o c o c w c c c r r r r r r r w c c r r r r r r c w w , , ,
 , , , , c c c c c c c c c c w c c r r r r r r r c c w r r r r r r c , w , , ,
 , , w w c c c c c c c c c c c c c r r r r r r r w c c r r r r r r c , w , , ,
 , , w w c w , , , , c c c w c c c c c c c c c c c c c c c c c c c c , w , , ,
 , , w w c w w , , , c c o w o c c R r r r r r r r c , , c c , , , c , w , , ,
 , , w w c w w w , , c w w o w w c r r r r r r r r c , , c c , , , c , w , , ,
 , , , , c , w w w , c c o w o c c r r r r r r r r c w c c c c w w c w w w w w
 , , , , c , , w w c c c c w c c c r r r r r r r r c w c o c c , , c , w , , w
 , , , , c , , , c c c c c c c c c r r r r r r r r c c c w o c c c c , w , , w
 , , , , c , , , c c R r r r r c c r r r r r r r r c c c o w c c c c , w , , w
 , , , , c , , , c c r r r r r c c r r r r r r r r c w c c o c , , c , w , , w
 , , , , c c c c c c r r r r r c c r r r r r r r r c w c c c c w w o w w w w w
 , , , , c w w w w c r r r r r c c c c c c c c c c c , , c c , , , w , w , , ,
 , , , , c c c c c c r r r r r c w c , w , , , w , c , , c c , , , , , w , , ,
 , , , , , , c w c c r r r r r c o c , , w , w , , c c c c c c c c c , w , , ,
 , , , , , , c w c c r r r r r c c c , , , w , , , c R r r r r r r c , w , , ,
 , , , , , , c w c c r r r r r c w c , , w , w , , c r r r r r r r c , w , , ,
 , , , , , , c w c c r r r r r c o c , w , , , w , c r r r r r r r c , w , , ,
 , , , , , , c w c c c c c c c c c c c c c c c c c c r r r r r r r c , w , , ,
 , , , , , , c c c c c c w c c c c c , , , , , c , c r r r r r r r c , w , , ,
 , , , , , , , , , , c c c w c R r r r r r r , c w c r r r r r r r c c c c c ,
 , , , , , , , , , w o c c c c r r r r r r r , c w c r r r r r r r c w w w c ,
 , , , , , , , , , , c c w c c r r r r r r r , c , c r r r r r r r c c c c c ,
 , , , , , , , , , , c c c w c r r r r r r r c c c c c c c c c c c c c c o w ,
 , , , , , , , , , w c w c c c r r r r r r r c c c c c c c c c c c c c c c c ,
 , , , , , , , , , , c c w c c r r r r r r r c w , , w c o c c w , c w w w c ,
 , , , , , , , , , , c c c c c r r r r r r r c w , , w c c c c w , c c c c c ,
 , , , , , , , , , w o c w c c r r r r r r r c c c c c c c o c w , , w c w , ,
 , , , , , , , , , , c c c w c r r r r r r r c w , , w c c c c w , , w c w , ,
 , , , , , , , , , , c c c c c c c c c c c c c w , , w c o c c w , , , c , , ,
 , , , , , , , , , , , , , , , c c c c c c c c w , , w c c c c w , , , c , , ,
 , , , , , , , , , , , , , , , c o c o c o c , , , , , c , , c , , w w c w w ,
 , , , , , , , , , , , , , , , , w , w , w , , , , , , c , , c , , w c c c w ,
 , , , , , , , , , , , , , , , , , , , , , , , , , , , c c c c c c c c h c , ,
 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , w c c c w ,
 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , w w , w w ,

With the conditionally formatted spreadsheet:

Spreadsheet

A thing a beauty! And here’s the map rendered in engine (flipped around this time, also no lighting)

Level2Full

Yet again there are a few issues. You need to jump though some hoops to get from the ODS spreadsheet file to the XML file. First the file is converted to the comma separated values format (CSV) and then the data is manually copied to the XML. Yeah, that last bit especially is not so great.

It is trivial to read the CSV file directly from Unity (something I didn’t know about way back then), so that’s what I’m going to do in the next project.

Conclusions

Tiles are a simple and powerful way to represent a level. Reading letter based map files is easy to code and fluid to create (with conditional formatting at least). Reusing systems that you’ve made before is a great boon to productivity. Take advantage of previous work as often as possible.

And, of course, you can play Transformagician right here.

Cutting Hedge was mentioned by Rock Paper Shotgun which is super exciting to me 😀
All it took was to tweet a convincing gif of my game directly to the wonderful @Brendy_C, so in case you want your game covered by press it probably is a good idea to directly address people.

This is the thing I tweeted:

with this gif attached:

Cutting Hedge by Headmade Games

[cache: storing page]