{"author_link":"\/users\/josh-bothun","author_name":"Josh Bothun","author_uid":"josh-bothun","comments":[],"epoch":1683004846,"event":"LD53","format":"md","ldjam_node_id":368267,"likes":6,"metadata":{"p_key":"200294","p_author":"Josh Bothun","p_authorkey":"1027741","p_urlkey":"432958","p_title":"A lesson in rabbit holes and time management","p_cat":"LDJam ","p_event":"LD53","p_time":"1683004846","p_likes":"6","p_comments":"0","p_status":"WAYBACK","us_key":"1027741","us_name":"Josh Bothun","us_username":"josh-bothun","event_start":"1682726400","event_key":"118","event_name":"Ludum Dare 53"},"node":{"_collation":{"body_sanitizer":"TextUtils::SanitizeHTML via existing importer","event":"LD53","removed_author":false},"_superparent":332127,"_trust":3,"author":27741,"body":"Wow, I'm exhausted, as always!  I'm happy to be done and I'm pretty happy with the result, too.\n\n![ld53.png](\/\/\/raw\/d5c\/6\/z\/5a6d8.png)\n\nI learned several things this go around but the biggest takeaway was to be more self-aware when I'm going into rabbit holes and try to time-box work on certain features.\n\nI spent the entire first 24 hours not touching code and just working on assets and visual components. I don't know how to model trees, so I decided to follow a tutorial in implementing a procedural tree generator in blender.  The results are decent looking:\n\n![1.PNG](\/\/\/raw\/d5c\/6\/z\/5a6f9.png)\n\nBut the graph is a bit of a nightmare...\n\n![2.PNG](\/\/\/raw\/d5c\/6\/z\/5a6fa.png)\n\nThe tutorial is here: https:\/\/www.youtube.com\/watch?v=WLym7frkpKM\n\nIn the end, i only generated 4 trees and a bush to use for the game. So while it was a great experience learning more about Blender geometry nodes, it was definitely a huge rabbit hole time sink.\n\nI also spent way too long on the grass!  Initially I tried a typical approach of quads and a simple drawn grass texture. But I didn't like the result of this as grass was too sparse, and increasing the density resulted in poor performance:\n\n![3.PNG](\/\/\/raw\/d5c\/6\/z\/5a703.png)\n\nAfter a few other attempts, I ended up settling on a GPU instanced solution, based off of the code here: https:\/\/github.com\/utkaka\/unity-gpu-instanced-grass\n\nThe strategy is to bake the grass blade positions before runtime by raycasting all over the scene and saving ground contact positions into a giant array.  This array is chunked up into multiple renderers which send the positions to the GPU in a ComputeBuffer, they don't need to change during runtime.  The shader has a simple noise-based wind effect on it.\n\n![4.PNG](\/\/\/raw\/d5c\/6\/z\/5a704.png)\n\nAnd the result is....Cool looking, but nothing like grass.  It looks like weird tentacles! \n\nAnother rabbit hole, I learned a lot about various ways of rendering grass, and I got it to run smoothly, but it was absolutely over time-budget since it wasn't critical to the final game.\n\nIn the end, I ended up taking an extra day to finish the game and get it submitted to the jam category: https:\/\/ldjam.com\/events\/ludum-dare\/53\/skypost\n","comments":1,"comments-timestamp":"2023-05-02T06:14:01Z","created":"2023-05-02T04:49:38Z","files":[],"files-timestamp":0,"id":368267,"love":6,"love-timestamp":"2023-05-02T10:49:36Z","meta":[],"modified":"2023-05-02T10:49:36Z","name":"A lesson in rabbit holes and time management","node-timestamp":"2023-05-02T05:36:01Z","parent":358508,"parents":[1,5,9,332127,358508],"path":"\/events\/ludum-dare\/53\/skypost\/a-lesson-in-rabbit-holes-and-time-management","published":"2023-05-02T05:20:46Z","scope":"public","slug":"a-lesson-in-rabbit-holes-and-time-management","subsubtype":"","subtype":"","type":"post","version":1133940},"node_metadata":{"n_key":"368267","n_urlkey":"432958","n_parent":"358508","n_path":"\/events\/ludum-dare\/53\/skypost\/a-lesson-in-rabbit-holes-and-time-management","n_slug":"a-lesson-in-rabbit-holes-and-tim","n_type":"post","n_subtype":"","n_subsubtype":"","n_author":"27741","n_created":"1683002978","n_modified":"1683024576","n_version":"1133940","n_status":"WAYBACK"},"source_url":"https:\/\/ldjam.com\/events\/ludum-dare\/53\/skypost\/a-lesson-in-rabbit-holes-and-time-management","text":"Wow, I'm exhausted, as always!  I'm happy to be done and I'm pretty happy with the result, too.\n\n![ld53.png](\/\/\/raw\/d5c\/6\/z\/5a6d8.png)\n\nI learned several things this go around but the biggest takeaway was to be more self-aware when I'm going into rabbit holes and try to time-box work on certain features.\n\nI spent the entire first 24 hours not touching code and just working on assets and visual components. I don't know how to model trees, so I decided to follow a tutorial in implementing a procedural tree generator in blender.  The results are decent looking:\n\n![1.PNG](\/\/\/raw\/d5c\/6\/z\/5a6f9.png)\n\nBut the graph is a bit of a nightmare...\n\n![2.PNG](\/\/\/raw\/d5c\/6\/z\/5a6fa.png)\n\nThe tutorial is here: https:\/\/www.youtube.com\/watch?v=WLym7frkpKM\n\nIn the end, i only generated 4 trees and a bush to use for the game. So while it was a great experience learning more about Blender geometry nodes, it was definitely a huge rabbit hole time sink.\n\nI also spent way too long on the grass!  Initially I tried a typical approach of quads and a simple drawn grass texture. But I didn't like the result of this as grass was too sparse, and increasing the density resulted in poor performance:\n\n![3.PNG](\/\/\/raw\/d5c\/6\/z\/5a703.png)\n\nAfter a few other attempts, I ended up settling on a GPU instanced solution, based off of the code here: https:\/\/github.com\/utkaka\/unity-gpu-instanced-grass\n\nThe strategy is to bake the grass blade positions before runtime by raycasting all over the scene and saving ground contact positions into a giant array.  This array is chunked up into multiple renderers which send the positions to the GPU in a ComputeBuffer, they don't need to change during runtime.  The shader has a simple noise-based wind effect on it.\n\n![4.PNG](\/\/\/raw\/d5c\/6\/z\/5a704.png)\n\nAnd the result is....Cool looking, but nothing like grass.  It looks like weird tentacles! \n\nAnother rabbit hole, I learned a lot about various ways of rendering grass, and I got it to run smoothly, but it was absolutely over time-budget since it wasn't critical to the final game.\n\nIn the end, I ended up taking an extra day to finish the game and get it submitted to the jam category: https:\/\/ldjam.com\/events\/ludum-dare\/53\/skypost\n","title":"A lesson in rabbit holes and time management","wayback_source":[]}