{"author_link":"\/users\/zuf","author_name":"zuf","author_uid":"zuf","comments":[],"epoch":1574684146,"event":"LD45","format":"md","ldjam_node_id":176614,"likes":6,"metadata":{"p_key":"137715","p_author":"zuf","p_authorkey":"1158506","p_urlkey":"353991","p_title":"LD45 Post Mortem - Blank Page","p_cat":"LDJam ","p_event":"LD45","p_time":"1574684146","p_likes":"6","p_comments":"0","p_status":"WAYBACK","us_key":"1158506","us_name":"zuf","us_username":"zuf","event_start":"1570147200","event_key":"78","event_name":"Ludum Dare 45"},"node":{"_collation":{"body_sanitizer":"TextUtils::SanitizeHTML via existing importer","event":"LD45","removed_author":false},"_superparent":159347,"_trust":2,"author":158506,"body":"Here's my long overdue post mortem.\n\nMy game: [Blank Page](https:\/\/ldjam.com\/events\/ludum-dare\/45\/blank-page\/)\n\nFinal results (Compo)\n```\nOverall:    15th  (4.1   average from 47 ratings)\nFun:        38th  (3.9   average from 47 ratings)\nInnovation: 1st   (4.656 average from 47 ratings)\nTheme:      2nd   (4.567 average from 47 ratings)\nGraphics:   287th (3.2   average from 47 ratings)\nMood:       221st (3.226 average from 44 ratings)\n```\nI'm very happy about this, especially considering this was my first game jam.\n\n----\nIn this post I'll mainly cover how I did ideation, design and development during the compo.\n\n## Before the compo\nThis was a good time of the year to have a compo because it was scheduled to start 8am local time at the beginning of a three day long weekend. I didn't schedule anything else that weekend.\n\nI wanted my game to be web-first (playable in a web browser) and ideally be written in [TypeScript](https:\/\/www.typescriptlang.org\/) because I like the type safety. I was considering using [Phaser](https:\/\/phaser.io\/) for the game engine.\n\n## The compo\nAt the start of the compo I began brainstorming ideas. Before long, I realised that the theme \"[you start with nothing](https:\/\/ldjam.com\/events\/ludum-dare\/45\/theme)\" was applicable to nearly all games, so it was very open-ended. You could build a Minecraft\/Factorio spinoff or some RPG and that would technically satisfy the theme. But I didn't want to build a regular game. Ideally, it should be something with a stronger-than-normal emphasis on _starting with nothing_.\n\nI liked the idea of starting with literally nothing: a completely empty webpage. No UI and no instructions. Nothing. This reminded me of games such as [A Dark Room](http:\/\/adarkroom.doublespeakgames.com\/) and [Candy Box 2](https:\/\/candybox2.github.io) where you start with a minimal UI, so I decided to go in that direction. I also liked Candy Box 2's charming ascii art, so decided to do that too. It was also easier for me to draw because I hadn't practiced creating my own game art in ages.\n\nBut what should happen next? I spent a long time trying to think of ideas. It was like the \"[blank sheet of paper](https:\/\/en.wikipedia.org\/wiki\/Special:BlankPage)\" problem described in the [rules](https:\/\/ldjam.com\/events\/ludum-dare\/rules) page. I found that linked Wikipedia page relevant, so I made it the next step in the game progression. From there I brainstormed ways to manipulate the characters to make stuff happen and unlock more things. It was turning into a very weird and abstract game.\n\nBut an overly weird game can be annoying or even unplayable. I knew I could make it less weird by giving it _internal consistency_. I figured that a minimalistic, grid-based __puzzle game__ would be suitable for this. So it became a game where you start with with knowing _nothing_ of what it's about or even how to play. You had to figure it out. Additionally, I liked the idea of __exploration__: starting with _nothing_ visible, then that small part of the page, then gradually uncovering more of the map. (More adherence to the theme.)\n\nIt was almost three hours in when I began setting up the project. By then I had decided that I didn't need a graphics library. It was enough to use just plain HTML, CSS and JavaScript (but transpiled from TypeScript).\n\nFrom there (and throughout the rest of the 48 hours), I tried thinking of game mechanics \u2013 ways to explore, ways to progress, things to unlock and things that would add challenge to a puzzle game.  First I thought of the click-to-remove letters and the expanding dot (`.`). Then the expanding `+`. Then the \"beacons\" (those numbers you need to light up), which were useful for dividing the map into separate challenges (or levels).\n\nDue to the exploratory aspect of the game, I challenged myself to fit the entire thing on one grid. I also wanted to make it impossible to get into an unwinnable state. I added \"powers\", initially as a way to undo moves. Later, I made it a design rule that each (non-passive) power should add some new possibility to the existing space. For example, the slider (`@`) makes you use the walls differently.\n\nI found it quite difficult to think of suitable new mechanics or powers. The slider idea happened at the nine hour mark. Twelve hours in, I came up with the idea of an \"anti-beacon\" (`0`) that you had to avoid, but I didn't have many ideas for new mechanics after that. Towards the end I thought of a weird tower defence idea, but didn't have enough time to implement it. [See Appendix 1]\n\nApart from coming up with ideas, I spent most of the time writing code and doing level design. My file structure was a mess. I didn't modularise it very well; one of the files was 700 lines of code + hacks. But it had types and only needed to be maintainable for two days. Level design took a lot of effort too. Due to my constraints of one map and no unwinnable states, the map became very complicated to design. I wanted the progression to be increasing in difficulty, and had to be careful to not make parts unintentionally skippable. I found it helpful to make a separate annotated version of the map for my own reference.\n\nRegarding progression, I wanted to introduce the player to new mechanics gradually. In accordance with the theme, I aimed to do it with minimal UI \u2013 without an explicit tutorial or instruction manual on how to play. (I was inspired by certain games that did this well. [See Appendix 2]) Even the [entry page](https:\/\/ldjam.com\/events\/ludum-dare\/45\/blank-page) was deliberately terse.\n\nOverall, it was an interesting challenge that encouraged me to push my limits. I had some doubts along the way but managed to produce something playable and complete enough to be a game.\n\nThanks to everyone who gave my game a chance. And thank you for reading.\n\n## Appendix\n\n1: Crazy tower defence \/ race idea:\n * Each race has a endpoint, which is a tile on the map. There are also several start points for allied and\/or enemy racers.\n * The player is able to prepare the map (by manipulating walls) and then start the race.\n   * When the race starts, all the racers attempt to reach the endpoint via the shortest path clear of walls.\n   * So the player should prepare by arranging walls in a way that gives allied racers an advantage and enemy racers a disadvantage.\n\n2: A game that's good at conveying the rules with less words: _Mega Man X_\n\nhttps:\/\/youtu.be\/8FpigqfcvlM","comments":1,"comments-timestamp":"2019-12-26T11:46:46Z","created":"2019-10-30T10:49:50Z","files":[],"files-timestamp":0,"id":176614,"love":6,"love-timestamp":"2019-12-21T20:34:23Z","meta":[],"modified":"2019-12-26T11:46:46Z","name":"LD45 Post Mortem - Blank Page","node-timestamp":"2019-11-25T12:15:46Z","parent":163798,"parents":[1,5,9,159347,163798],"path":"\/events\/ludum-dare\/45\/blank-page\/ld45-post-mortem-blank-page","published":"2019-11-25T12:15:46Z","scope":"public","slug":"ld45-post-mortem-blank-page","subsubtype":"","subtype":"","type":"post","version":533927},"node_metadata":{"n_key":"176614","n_urlkey":"353991","n_parent":"163798","n_path":"\/events\/ludum-dare\/45\/blank-page\/ld45-post-mortem-blank-page","n_slug":"ld45-post-mortem-blank-page","n_type":"post","n_subtype":"","n_subsubtype":"","n_author":"158506","n_created":"1572432590","n_modified":"1577360806","n_version":"533927","n_status":"WAYBACK"},"source_url":"https:\/\/ldjam.com\/events\/ludum-dare\/45\/blank-page\/ld45-post-mortem-blank-page","text":"Here's my long overdue post mortem.\n\nMy game: [Blank Page](https:\/\/ldjam.com\/events\/ludum-dare\/45\/blank-page\/)\n\nFinal results (Compo)\n```\nOverall:    15th  (4.1   average from 47 ratings)\nFun:        38th  (3.9   average from 47 ratings)\nInnovation: 1st   (4.656 average from 47 ratings)\nTheme:      2nd   (4.567 average from 47 ratings)\nGraphics:   287th (3.2   average from 47 ratings)\nMood:       221st (3.226 average from 44 ratings)\n```\nI'm very happy about this, especially considering this was my first game jam.\n\n----\nIn this post I'll mainly cover how I did ideation, design and development during the compo.\n\n## Before the compo\nThis was a good time of the year to have a compo because it was scheduled to start 8am local time at the beginning of a three day long weekend. I didn't schedule anything else that weekend.\n\nI wanted my game to be web-first (playable in a web browser) and ideally be written in [TypeScript](https:\/\/www.typescriptlang.org\/) because I like the type safety. I was considering using [Phaser](https:\/\/phaser.io\/) for the game engine.\n\n## The compo\nAt the start of the compo I began brainstorming ideas. Before long, I realised that the theme \"[you start with nothing](https:\/\/ldjam.com\/events\/ludum-dare\/45\/theme)\" was applicable to nearly all games, so it was very open-ended. You could build a Minecraft\/Factorio spinoff or some RPG and that would technically satisfy the theme. But I didn't want to build a regular game. Ideally, it should be something with a stronger-than-normal emphasis on _starting with nothing_.\n\nI liked the idea of starting with literally nothing: a completely empty webpage. No UI and no instructions. Nothing. This reminded me of games such as [A Dark Room](http:\/\/adarkroom.doublespeakgames.com\/) and [Candy Box 2](https:\/\/candybox2.github.io) where you start with a minimal UI, so I decided to go in that direction. I also liked Candy Box 2's charming ascii art, so decided to do that too. It was also easier for me to draw because I hadn't practiced creating my own game art in ages.\n\nBut what should happen next? I spent a long time trying to think of ideas. It was like the \"[blank sheet of paper](https:\/\/en.wikipedia.org\/wiki\/Special:BlankPage)\" problem described in the [rules](https:\/\/ldjam.com\/events\/ludum-dare\/rules) page. I found that linked Wikipedia page relevant, so I made it the next step in the game progression. From there I brainstormed ways to manipulate the characters to make stuff happen and unlock more things. It was turning into a very weird and abstract game.\n\nBut an overly weird game can be annoying or even unplayable. I knew I could make it less weird by giving it _internal consistency_. I figured that a minimalistic, grid-based __puzzle game__ would be suitable for this. So it became a game where you start with with knowing _nothing_ of what it's about or even how to play. You had to figure it out. Additionally, I liked the idea of __exploration__: starting with _nothing_ visible, then that small part of the page, then gradually uncovering more of the map. (More adherence to the theme.)\n\nIt was almost three hours in when I began setting up the project. By then I had decided that I didn't need a graphics library. It was enough to use just plain HTML, CSS and JavaScript (but transpiled from TypeScript).\n\nFrom there (and throughout the rest of the 48 hours), I tried thinking of game mechanics \u2013 ways to explore, ways to progress, things to unlock and things that would add challenge to a puzzle game.  First I thought of the click-to-remove letters and the expanding dot (`.`). Then the expanding `+`. Then the \"beacons\" (those numbers you need to light up), which were useful for dividing the map into separate challenges (or levels).\n\nDue to the exploratory aspect of the game, I challenged myself to fit the entire thing on one grid. I also wanted to make it impossible to get into an unwinnable state. I added \"powers\", initially as a way to undo moves. Later, I made it a design rule that each (non-passive) power should add some new possibility to the existing space. For example, the slider (`@`) makes you use the walls differently.\n\nI found it quite difficult to think of suitable new mechanics or powers. The slider idea happened at the nine hour mark. Twelve hours in, I came up with the idea of an \"anti-beacon\" (`0`) that you had to avoid, but I didn't have many ideas for new mechanics after that. Towards the end I thought of a weird tower defence idea, but didn't have enough time to implement it. [See Appendix 1]\n\nApart from coming up with ideas, I spent most of the time writing code and doing level design. My file structure was a mess. I didn't modularise it very well; one of the files was 700 lines of code + hacks. But it had types and only needed to be maintainable for two days. Level design took a lot of effort too. Due to my constraints of one map and no unwinnable states, the map became very complicated to design. I wanted the progression to be increasing in difficulty, and had to be careful to not make parts unintentionally skippable. I found it helpful to make a separate annotated version of the map for my own reference.\n\nRegarding progression, I wanted to introduce the player to new mechanics gradually. In accordance with the theme, I aimed to do it with minimal UI \u2013 without an explicit tutorial or instruction manual on how to play. (I was inspired by certain games that did this well. [See Appendix 2]) Even the [entry page](https:\/\/ldjam.com\/events\/ludum-dare\/45\/blank-page) was deliberately terse.\n\nOverall, it was an interesting challenge that encouraged me to push my limits. I had some doubts along the way but managed to produce something playable and complete enough to be a game.\n\nThanks to everyone who gave my game a chance. And thank you for reading.\n\n## Appendix\n\n1: Crazy tower defence \/ race idea:\n * Each race has a endpoint, which is a tile on the map. There are also several start points for allied and\/or enemy racers.\n * The player is able to prepare the map (by manipulating walls) and then start the race.\n   * When the race starts, all the racers attempt to reach the endpoint via the shortest path clear of walls.\n   * So the player should prepare by arranging walls in a way that gives allied racers an advantage and enemy racers a disadvantage.\n\n2: A game that's good at conveying the rules with less words: _Mega Man X_\n\nhttps:\/\/youtu.be\/8FpigqfcvlM","title":"LD45 Post Mortem - Blank Page","wayback_source":[]}