{"author_link":"\/users\/acearcher","author_name":"AceArcher","author_uid":"acearcher","comments":[],"epoch":1602975974,"event":"LD47","format":"md","ldjam_node_id":231479,"likes":5,"metadata":{"p_key":"151662","p_author":"AceArcher","p_authorkey":"1139613","p_urlkey":"368167","p_title":"Minotorus Postmortem","p_cat":"LDJam ","p_event":"LD47","p_time":"1602975974","p_likes":"5","p_comments":"0","p_status":"WAYBACK","us_key":"1139613","us_name":"AceArcher","us_username":"acearcher","event_start":"1601596800","event_key":"76","event_name":"Ludum Dare 47"},"node":{"_collation":{"body_sanitizer":"TextUtils::SanitizeHTML via existing importer","event":"LD47","removed_author":false},"_superparent":212256,"_trust":1,"author":139613,"body":"Well, Play\/Rate is starting to wind down and I, like a genius, haven't started rating other people and advertising my game. So, to try and get a bit more interest (especially since the game shouldn't be bugged almost beyond being playable anymore!) I thought I'd give a little development postmortem! I know it's long, but I thought it might be helpful for some people to see how other people work. If you don't want to read the whole thing (understandable!) you can jump right to playing my game at https:\/\/ldjam.com\/events\/ludum-dare\/47\/minotorus and leave me a rating!\n\n![title 5 4.png](\/\/\/raw\/d51\/22\/z\/3a3e0.png)\n\n## Unused Ideas\n\nLike everyone, I had a fair few ideas that I ended up striking for one reason or another. I wrote them all up in one long list so I could add new bits onto them and see which one got the most fleshed-out.\n\n- Loupe - it's a pun! On a magnifying loupe! But it's pronounced like loop! Maybe for use in a hidden-object escape-the-room on a very strict timer? Rejected for requiring puzzle design.\n- Hamster-ball platformer - the player would be stuck in a \"loop\"\/hamster ball and be platforming around to try and break the ball. I'm glad I didn't go with this one, because I saw someone else doing the exact same thing! Rejected for requiring platforming level design and also because hamster balls are spheres, not loops.\n- Weird spaceship thing - orbits are loops, and so maybe you're on a spaceship stuck in orbit around a black hole (thus causing time to go weird) and if you can't fix your engines fast enough you fall into the black hole and die. Rejected because I thought most people would be doing something similar, but it was my second-place idea.\n\n![planning doc.png](\/\/\/raw\/d51\/22\/z\/3a3dc.png)\n*What can I say, I love to make long lists!*\n\n## The Process\n\nThe way I work best is by making lists of tasks, then breaking each of those down farther and farther until I get to the smallest bits. I made my first task list in the same document as the ideas, because I didn't know how many sub-tasks I'd have to add under each task. Once I was fairly confident I had a complete list, I wrote it down on the legal pad I keep by my computer for this exact reason. I really like being able to physically cross tasks off the list when I'm done with them or be able to quickly jot down extra tasks or notes to the side. It helps me feel like I'm actually accomplishing things, and I can tell what's next at a glance.\n\nAfter planning, I got to coding. Down the list I went! But the task list isn't the law - I wound up switching some things around because I didn't want to have to go to bed halfway through implementing the maze generation! I also did a lot of research to make sure I knew what I was doing at least a little. This was my first time doing procedural mazes and multi-phase boss fights, so I needed to know the options I had for how to implement them. I decided on using Hunt-and-Kill for the maze and animation-based attacks for the boss, but while I was looking those up I also learned about C# Events. You'd think maybe I would've been taught about them during my 4-year game design degree, but nope! First time hearing about them! They're very useful and I'm sure I didn't use them quite right but it was great to be able to just have the player health say \"Hey! I died!\" and everything else say \"Oh, I heard that, time to reset!\"\n\nAt some point, I realized that I didn't really have a full game loop where the player navigated the maze, died to a timer, did it again until they found the Minotaur, did that until they defeated the Minotaur, then won the game and saw the game over screen. I was taught to always have a game loop and just add extra stuff onto it so you've always got something playable, so I had to get that set up, which involved quite a lot of things, like the timer, timing UI, Minotaur spawning, getting the golden thread actually saving between runs if you hit a checkpoint, all sorts of little details like that.\n\nWith the game loop done, I now technically had a complete game. Not a terribly *fun* game, but it could've been done there. Because it was fully playable, it was time to add in the last few mechanics. I added in the dialog UI, then skipped over making a dialog outline and went straight to the actual final writing, including communication between the dialog and the game code to know when items have been earned. The last mechanic to do was the boss phases, which I super didn't want to do and kind of dragged on designing and implementing. But I eventually got it in, and then I had all of Monday to really polish up.\n\nI decided the most important part of polishing would be adding the story so it was clear what was happening and why. All that involved was adding in an extra conversation with Athena on the player's first death and some text to the opening and ending screens. And speaking of the menus:\n\n![title screen 1.png](\/\/\/raw\/d51\/22\/z\/3a3ec.png)\n![title screen 2.png](\/\/\/raw\/d51\/22\/z\/3a3ed.png)\n*Be careful who you call ugly in middle school.*\n\nAfter menus came, in order, sending it to friends for playtesting, finding passable character models, adding animations, putting decent materials on everything in the maze, adding dramatic lighting, and making the UI look just a little better. With about an hour left I found the first BGM and SFX that sounded okay enough, slapped them in, and submitted! Done! What a good jam! A total of 37 hours of work and a pretty good game!\n\n## The Bugfixes\n\nExcept it turns out the WebGL build was very broken! In the Windows version and the Unity editor, I had the mouse sensitivity set to 10, which felt good. Apparently, WebGL handles mouse sensitivity differently! After trial and error, I realized the better number is *0.75*, which is rather significantly less than 10! This meant that the WebGL build was basically not playable, because the mouse was so overly sensitive that you couldn't really look around. And while fixing that, I learned that the golden thread was actually not working as intended at all and wasn't saving between runs! Joy! But I got it fixed and reuploaded, no problem, all good!\n\nExcept it wasn't! The mouse sensitivity was now fine in the antechamber, but for reasons that I absolutely cannot imagine, once you got into the maze it was still unplayably high! And at some point the player's animations broke entirely, which meant the attack animation wasn't playing, which meant that the player literally couldn't attack. So I went *again* and fixed it *again* and while I was there I fixed the game being the wrong resolution.\n\n## The Lessons\n\n1. If you're going to use a source control, do it in the very beginning and also know what you're doing so you don't waste an hour trying to get it to work.\n2. Bugfix in every platform you're publishing to, don't just assume if it's fine in one it's fine for all of them.\n3. There *are* actually consequences to getting not enough sleep! It might be better to \"waste\" time sleeping so your brain functions better and you don't actually waste time staring off into the middle distance thinking \"Wow, I'm so tired!\"\n4. I did this for fun. When it stopped being fun and I really just didn't want to make a multi-phase boss, I should've thought of a different idea that would've been more fun to implement. I like game design, and in something like this where I'm only beholden to myself, I should be doing things I like!\n5. Games break! Especially games made in 72 hours. Be nice to yourself, and recognize that a lot of people probably have bugs in their games! But also test test test.\n6. Just do your Play\/Rate at the beginning when most other people are doing it so you're more likely to get people to play your game. I did this last time I did LD and I'm doing it again here because I am a procrastination gremlin and I'll probably just do it again next time I participate, but maybe if I write it here I'll learn a lesson?","comments":0,"created":"2020-10-17T20:32:37Z","files":[],"files-timestamp":0,"id":231479,"love":5,"love-timestamp":"2020-10-18T17:56:16Z","meta":[],"modified":"2020-10-18T17:56:16Z","name":"Minotorus Postmortem","node-timestamp":"2020-10-17T23:06:14Z","parent":215622,"parents":[1,5,9,212256,215622],"path":"\/events\/ludum-dare\/47\/minotorus\/minotorus-postmortem","published":"2020-10-17T23:06:14Z","scope":"public","slug":"minotorus-postmortem","subsubtype":"","subtype":"","type":"post","version":706634},"node_metadata":{"n_key":"231479","n_urlkey":"368167","n_parent":"215622","n_path":"\/events\/ludum-dare\/47\/minotorus\/minotorus-postmortem","n_slug":"minotorus-postmortem","n_type":"post","n_subtype":"","n_subsubtype":"","n_author":"139613","n_created":"1602966757","n_modified":"1603043776","n_version":"706634","n_status":"WAYBACK"},"source_url":"https:\/\/ldjam.com\/events\/ludum-dare\/47\/minotorus\/minotorus-postmortem","text":"Well, Play\/Rate is starting to wind down and I, like a genius, haven't started rating other people and advertising my game. So, to try and get a bit more interest (especially since the game shouldn't be bugged almost beyond being playable anymore!) I thought I'd give a little development postmortem! I know it's long, but I thought it might be helpful for some people to see how other people work. If you don't want to read the whole thing (understandable!) you can jump right to playing my game at https:\/\/ldjam.com\/events\/ludum-dare\/47\/minotorus and leave me a rating!\n\n![title 5 4.png](\/\/\/raw\/d51\/22\/z\/3a3e0.png)\n\n## Unused Ideas\n\nLike everyone, I had a fair few ideas that I ended up striking for one reason or another. I wrote them all up in one long list so I could add new bits onto them and see which one got the most fleshed-out.\n\n- Loupe - it's a pun! On a magnifying loupe! But it's pronounced like loop! Maybe for use in a hidden-object escape-the-room on a very strict timer? Rejected for requiring puzzle design.\n- Hamster-ball platformer - the player would be stuck in a \"loop\"\/hamster ball and be platforming around to try and break the ball. I'm glad I didn't go with this one, because I saw someone else doing the exact same thing! Rejected for requiring platforming level design and also because hamster balls are spheres, not loops.\n- Weird spaceship thing - orbits are loops, and so maybe you're on a spaceship stuck in orbit around a black hole (thus causing time to go weird) and if you can't fix your engines fast enough you fall into the black hole and die. Rejected because I thought most people would be doing something similar, but it was my second-place idea.\n\n![planning doc.png](\/\/\/raw\/d51\/22\/z\/3a3dc.png)\n*What can I say, I love to make long lists!*\n\n## The Process\n\nThe way I work best is by making lists of tasks, then breaking each of those down farther and farther until I get to the smallest bits. I made my first task list in the same document as the ideas, because I didn't know how many sub-tasks I'd have to add under each task. Once I was fairly confident I had a complete list, I wrote it down on the legal pad I keep by my computer for this exact reason. I really like being able to physically cross tasks off the list when I'm done with them or be able to quickly jot down extra tasks or notes to the side. It helps me feel like I'm actually accomplishing things, and I can tell what's next at a glance.\n\nAfter planning, I got to coding. Down the list I went! But the task list isn't the law - I wound up switching some things around because I didn't want to have to go to bed halfway through implementing the maze generation! I also did a lot of research to make sure I knew what I was doing at least a little. This was my first time doing procedural mazes and multi-phase boss fights, so I needed to know the options I had for how to implement them. I decided on using Hunt-and-Kill for the maze and animation-based attacks for the boss, but while I was looking those up I also learned about C# Events. You'd think maybe I would've been taught about them during my 4-year game design degree, but nope! First time hearing about them! They're very useful and I'm sure I didn't use them quite right but it was great to be able to just have the player health say \"Hey! I died!\" and everything else say \"Oh, I heard that, time to reset!\"\n\nAt some point, I realized that I didn't really have a full game loop where the player navigated the maze, died to a timer, did it again until they found the Minotaur, did that until they defeated the Minotaur, then won the game and saw the game over screen. I was taught to always have a game loop and just add extra stuff onto it so you've always got something playable, so I had to get that set up, which involved quite a lot of things, like the timer, timing UI, Minotaur spawning, getting the golden thread actually saving between runs if you hit a checkpoint, all sorts of little details like that.\n\nWith the game loop done, I now technically had a complete game. Not a terribly *fun* game, but it could've been done there. Because it was fully playable, it was time to add in the last few mechanics. I added in the dialog UI, then skipped over making a dialog outline and went straight to the actual final writing, including communication between the dialog and the game code to know when items have been earned. The last mechanic to do was the boss phases, which I super didn't want to do and kind of dragged on designing and implementing. But I eventually got it in, and then I had all of Monday to really polish up.\n\nI decided the most important part of polishing would be adding the story so it was clear what was happening and why. All that involved was adding in an extra conversation with Athena on the player's first death and some text to the opening and ending screens. And speaking of the menus:\n\n![title screen 1.png](\/\/\/raw\/d51\/22\/z\/3a3ec.png)\n![title screen 2.png](\/\/\/raw\/d51\/22\/z\/3a3ed.png)\n*Be careful who you call ugly in middle school.*\n\nAfter menus came, in order, sending it to friends for playtesting, finding passable character models, adding animations, putting decent materials on everything in the maze, adding dramatic lighting, and making the UI look just a little better. With about an hour left I found the first BGM and SFX that sounded okay enough, slapped them in, and submitted! Done! What a good jam! A total of 37 hours of work and a pretty good game!\n\n## The Bugfixes\n\nExcept it turns out the WebGL build was very broken! In the Windows version and the Unity editor, I had the mouse sensitivity set to 10, which felt good. Apparently, WebGL handles mouse sensitivity differently! After trial and error, I realized the better number is *0.75*, which is rather significantly less than 10! This meant that the WebGL build was basically not playable, because the mouse was so overly sensitive that you couldn't really look around. And while fixing that, I learned that the golden thread was actually not working as intended at all and wasn't saving between runs! Joy! But I got it fixed and reuploaded, no problem, all good!\n\nExcept it wasn't! The mouse sensitivity was now fine in the antechamber, but for reasons that I absolutely cannot imagine, once you got into the maze it was still unplayably high! And at some point the player's animations broke entirely, which meant the attack animation wasn't playing, which meant that the player literally couldn't attack. So I went *again* and fixed it *again* and while I was there I fixed the game being the wrong resolution.\n\n## The Lessons\n\n1. If you're going to use a source control, do it in the very beginning and also know what you're doing so you don't waste an hour trying to get it to work.\n2. Bugfix in every platform you're publishing to, don't just assume if it's fine in one it's fine for all of them.\n3. There *are* actually consequences to getting not enough sleep! It might be better to \"waste\" time sleeping so your brain functions better and you don't actually waste time staring off into the middle distance thinking \"Wow, I'm so tired!\"\n4. I did this for fun. When it stopped being fun and I really just didn't want to make a multi-phase boss, I should've thought of a different idea that would've been more fun to implement. I like game design, and in something like this where I'm only beholden to myself, I should be doing things I like!\n5. Games break! Especially games made in 72 hours. Be nice to yourself, and recognize that a lot of people probably have bugs in their games! But also test test test.\n6. Just do your Play\/Rate at the beginning when most other people are doing it so you're more likely to get people to play your game. I did this last time I did LD and I'm doing it again here because I am a procrastination gremlin and I'll probably just do it again next time I participate, but maybe if I write it here I'll learn a lesson?","title":"Minotorus Postmortem","wayback_source":[]}