{"author_link":"\/users\/saurterrs","author_name":"saurterrs","author_uid":"saurterrs","comments":[],"epoch":1602176857,"event":"LD47","format":"md","ldjam_node_id":229910,"likes":0,"metadata":{"p_key":"150645","p_author":"saurterrs","p_authorkey":"1004175","p_urlkey":"367150","p_title":"Making of StackInTheLoop racing game","p_cat":"LDJam ","p_event":"LD47","p_time":"1602176857","p_likes":"0","p_comments":"0","p_status":"WAYBACK","us_key":"1004175","us_name":"saurterrs","us_username":"saurterrs","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":4175,"body":"This is post about the game our team created for the  47 jam: https:\/\/ldjam.com\/events\/ludum-dare\/47\/stackintheloop\n\nMostly, it will be my experience, but maybe @rebelcaptain or @idawaxeor will share their experience too.\n\nIt was the first ld we participated as a team. When we woke at the morning and was the theme the first thing that comed up was about a guy who literally got stuck in the loop attached to the helicopter and he must wobble himself to avoid obstacles.\n\nWe threw it away after 5 minutes of discussions :)\n\nNext we thought about about more classical approach - a simple platformer with time loop and solving puzzles to escape it. Kind of obvious, but with good level design could have worked.\n\nBut in the end we just come up with something like: \"hey, why won't we do a racing game with time loop?\" End so it begun.\n\n\n**The start**\n\nTill the first day midday we were brainstorming on how exactly this should look and be played. We also come up with several testing models of the car like this: \n![photo_2020-10-03_09-14-14.jpg](\/\/\/raw\/f40\/1\/z\/39aad.jpg)\n\nEvery time I tried to mess with the blender it ended with loss of time and frustration. So *Clayxels* asset for unity proven itself as a perfect tool for fast modelling. Used it for the first time.\n\nNext was the car physics. Unity already had wheel colliders, a bunch of manuals, so it was easy to implement. And more than one hour to adjust :smiley: \nI also heard one of the best compliment in my life from one of my teammate: \"the car feels hard, more for simulation but the arcade. like nfs5\" *the best nfs in my personal opinion. We agreed to add a second controlls preset for more simple model, but were not able to finish it :(\n\n\n**The map**\n\nInitially we thought on autogenerating track every loop. Blocked the idea.\nThan we decided to change some parts of the track every loop - like new turns and etc. At the end of day 1 we knew we would not handle it correctly.\n\nIn the end the track representation was a simple drawing in image editor, something like that: ![\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0442 2020-10-08 22-13-40.png](\/\/\/raw\/f40\/1\/z\/39b37.png)\nThis picture is used as a mask for terrain generator - black is the road and have constant height, the white is no mask. The grey area was used as transition zone, but looked awful.\n\nFor map generating we used a classic way with perlin noise. Two loops of generating - the first with large scale, the second with small, every value of height map is the average value of both. Additionaly we added diamond square to them. The relief was looking perfect...\n\nThen we added the track and it was a disaster >_>\n\nNo matter how the track height offset we set - the relief was just too.. high. Beautiful, yes, but unsusable for racing purposes. So the next step was adding another mask to map generation, than will smooth the area. Yet the first iteration was not completely perfect too:\n![\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0442 2020-10-08 21-35-58.png](\/\/\/raw\/f40\/1\/z\/39b19.png) \n\nAfter an hour of GIMP masteries I managed to get something suitable as a mask:\n![\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0442 2020-10-08 22-16-18.png](\/\/\/raw\/f40\/1\/z\/39b36.png)\n\nYou can see that it follows the track. The algorithm is simple:\n * While map is generated iterate every pixel of terrain height map\n * Check the value of the road mask. If black - set height value on something like `0.4f - 0.001f`\n * Check the value of the mask map. If not road and height map value is more than 0.4f - remap the height value with max depending on the mask map value\n\nThe result was still too flat, but it gave some not so bad scenery views\n![The scenery.png](\/\/\/raw\/f40\/1\/z\/39b27.png)\n\n\n**The results**\n\nIn the end no matter what is was fun :)\n\nBut we failed with time management. We started weekend with unfinished deals and they ate up our time, one of the team catch a flu and dropped off on the day three.\n\nThree hours from the jam end I was craddling my child (for an hour already cause why not to stop sleeping when daddy in the hurry?)) ). I was wathcing the clock and thinking: so, it is minus this feature... and now the time to drop another one. And when he finally felt asleep I hurriedly run on bugs and not-so-long to apply features left.\n\nThe project could be and one day will be better, with all those little tweaks it needed: trees, sfx sounds, smooth visual transitions. But, nevertheless, I am happy with results, coding all this was fun, and I really enjoy the feeling from riding this tiny rear whell car we made ^_^ \n\nHope you will enjoy it as well.","comments":0,"created":"2020-10-07T17:57:16Z","files":[],"files-timestamp":0,"id":229910,"love":0,"meta":[],"modified":"2020-10-08T17:17:47Z","name":"Making of StackInTheLoop racing game","node-timestamp":"2020-10-08T17:17:47Z","parent":216627,"parents":[1,5,9,212256,216627],"path":"\/events\/ludum-dare\/47\/stackintheloop\/making-of-stackintheloop-racing-game","published":"2020-10-08T17:07:37Z","scope":"public","slug":"making-of-stackintheloop-racing-game","subsubtype":"","subtype":"","type":"post","version":701112},"node_metadata":{"n_key":"229910","n_urlkey":"367150","n_parent":"216627","n_path":"\/events\/ludum-dare\/47\/stackintheloop\/making-of-stackintheloop-racing-game","n_slug":"making-of-stackintheloop-racing-","n_type":"post","n_subtype":"","n_subsubtype":"","n_author":"4175","n_created":"1602093436","n_modified":"1602177467","n_version":"701112","n_status":"WAYBACK"},"source_url":"https:\/\/ldjam.com\/events\/ludum-dare\/47\/stackintheloop\/making-of-stackintheloop-racing-game","text":"This is post about the game our team created for the  47 jam: https:\/\/ldjam.com\/events\/ludum-dare\/47\/stackintheloop\n\nMostly, it will be my experience, but maybe @rebelcaptain or @idawaxeor will share their experience too.\n\nIt was the first ld we participated as a team. When we woke at the morning and was the theme the first thing that comed up was about a guy who literally got stuck in the loop attached to the helicopter and he must wobble himself to avoid obstacles.\n\nWe threw it away after 5 minutes of discussions :)\n\nNext we thought about about more classical approach - a simple platformer with time loop and solving puzzles to escape it. Kind of obvious, but with good level design could have worked.\n\nBut in the end we just come up with something like: \"hey, why won't we do a racing game with time loop?\" End so it begun.\n\n\n**The start**\n\nTill the first day midday we were brainstorming on how exactly this should look and be played. We also come up with several testing models of the car like this: \n![photo_2020-10-03_09-14-14.jpg](\/\/\/raw\/f40\/1\/z\/39aad.jpg)\n\nEvery time I tried to mess with the blender it ended with loss of time and frustration. So *Clayxels* asset for unity proven itself as a perfect tool for fast modelling. Used it for the first time.\n\nNext was the car physics. Unity already had wheel colliders, a bunch of manuals, so it was easy to implement. And more than one hour to adjust :smiley: \nI also heard one of the best compliment in my life from one of my teammate: \"the car feels hard, more for simulation but the arcade. like nfs5\" *the best nfs in my personal opinion. We agreed to add a second controlls preset for more simple model, but were not able to finish it :(\n\n\n**The map**\n\nInitially we thought on autogenerating track every loop. Blocked the idea.\nThan we decided to change some parts of the track every loop - like new turns and etc. At the end of day 1 we knew we would not handle it correctly.\n\nIn the end the track representation was a simple drawing in image editor, something like that: ![\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0442 2020-10-08 22-13-40.png](\/\/\/raw\/f40\/1\/z\/39b37.png)\nThis picture is used as a mask for terrain generator - black is the road and have constant height, the white is no mask. The grey area was used as transition zone, but looked awful.\n\nFor map generating we used a classic way with perlin noise. Two loops of generating - the first with large scale, the second with small, every value of height map is the average value of both. Additionaly we added diamond square to them. The relief was looking perfect...\n\nThen we added the track and it was a disaster >_>\n\nNo matter how the track height offset we set - the relief was just too.. high. Beautiful, yes, but unsusable for racing purposes. So the next step was adding another mask to map generation, than will smooth the area. Yet the first iteration was not completely perfect too:\n![\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0442 2020-10-08 21-35-58.png](\/\/\/raw\/f40\/1\/z\/39b19.png) \n\nAfter an hour of GIMP masteries I managed to get something suitable as a mask:\n![\u0421\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430 \u043e\u0442 2020-10-08 22-16-18.png](\/\/\/raw\/f40\/1\/z\/39b36.png)\n\nYou can see that it follows the track. The algorithm is simple:\n * While map is generated iterate every pixel of terrain height map\n * Check the value of the road mask. If black - set height value on something like `0.4f - 0.001f`\n * Check the value of the mask map. If not road and height map value is more than 0.4f - remap the height value with max depending on the mask map value\n\nThe result was still too flat, but it gave some not so bad scenery views\n![The scenery.png](\/\/\/raw\/f40\/1\/z\/39b27.png)\n\n\n**The results**\n\nIn the end no matter what is was fun :)\n\nBut we failed with time management. We started weekend with unfinished deals and they ate up our time, one of the team catch a flu and dropped off on the day three.\n\nThree hours from the jam end I was craddling my child (for an hour already cause why not to stop sleeping when daddy in the hurry?)) ). I was wathcing the clock and thinking: so, it is minus this feature... and now the time to drop another one. And when he finally felt asleep I hurriedly run on bugs and not-so-long to apply features left.\n\nThe project could be and one day will be better, with all those little tweaks it needed: trees, sfx sounds, smooth visual transitions. But, nevertheless, I am happy with results, coding all this was fun, and I really enjoy the feeling from riding this tiny rear whell car we made ^_^ \n\nHope you will enjoy it as well.","title":"Making of StackInTheLoop racing game","wayback_source":[]}