[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fG5W8IZj6ZjmY-BLmGCSXd9E_5owP8X-kiV9ppeR8HX8":3},{"project":4,"allProjects":134,"githubUsername":161},{"body":5,"description":114,"endDate":115,"language":116,"liveUrl":117,"name":118,"repo":118,"slug":119,"startDate":122,"status":123,"techStack":124,"thumbnail":128,"type":133},[6,17,26,34,42,50,58,66,74,82,90,98,106],{"_key":7,"_type":8,"children":9,"markDefs":15,"style":16},"a1","block",[10],{"_key":11,"_type":12,"marks":13,"text":14},"a1s","span",[],"Overview",[],"h2",{"_key":18,"_type":8,"children":19,"markDefs":24,"style":25},"a2",[20],{"_key":21,"_type":12,"marks":22,"text":23},"a2s",[],"FishFest24 was my entry for the FishFest 2024 Game Jam — a week-long jam (albeit I only managed a few spare hours) with a fish-themed brief. The result was a top-down 2D infinite survival game where the player is relentlessly hunted by enemies that use A* pathfinding to navigate around obstacles and close the gap.",[],"normal",{"_key":27,"_type":8,"children":28,"markDefs":33,"style":16},"b1",[29],{"_key":30,"_type":12,"marks":31,"text":32},"b1s",[],"The Concept",[],{"_key":35,"_type":8,"children":36,"markDefs":41,"style":25},"b2",[37],{"_key":38,"_type":12,"marks":39,"text":40},"b2s",[],"The core loop is simple: survive as long as possible. Enemies spawn in waves, each wave slightly faster and more numerous than the last. There is no win state — just a high score.",[],{"_key":43,"_type":8,"children":44,"markDefs":49,"style":16},"c1",[45],{"_key":46,"_type":12,"marks":47,"text":48},"c1s",[],"Technical Highlights",[],{"_key":51,"_type":8,"children":52,"markDefs":57,"style":25},"c2",[53],{"_key":54,"_type":12,"marks":55,"text":56},"c2s",[],"The main technical focus was implementing A* pathfinding for the enemies. Since I was so limited on time I found a public library which turned out to be used in many published steam games (not by me) for the enemy pathfinding. Reading the technical documentation to understand how it works was a rewarding challenge. I also don’t use many external packages in Unity so using an external system was a first for me",[],{"_key":59,"_type":8,"children":60,"markDefs":65,"style":25},"c3",[61],{"_key":62,"_type":12,"marks":63,"text":64},"c3s",[],"Player behaviour is a simple floaty controller that I mocked up in about 30 minutes to simulate an underwater low gravity effect.",[],{"_key":67,"_type":8,"children":68,"markDefs":73,"style":16},"d1",[69],{"_key":70,"_type":12,"marks":71,"text":72},"d1s",[],"Challenges",[],{"_key":75,"_type":8,"children":76,"markDefs":81,"style":25},"d2",[77],{"_key":78,"_type":12,"marks":79,"text":80},"d2s",[],"The biggest challenge was implementing the external A* pathfinding library as before I’ve only ever used my own. Reading the documentation and tutorial videos were extremely beneficial for this.",[],{"_key":83,"_type":8,"children":84,"markDefs":89,"style":25},"d3",[85],{"_key":86,"_type":12,"marks":87,"text":88},"d3s",[],"Time pressure was the biggest factor, I only had a few hours to make this project so early on I decided for a super simple game idea and outsourced the technical challenge and focused on setting up animations and making the player feel fishlike.",[],{"_key":91,"_type":8,"children":92,"markDefs":97,"style":16},"e1",[93],{"_key":94,"_type":12,"marks":95,"text":96},"e1s",[],"What I Learned",[],{"_key":99,"_type":8,"children":100,"markDefs":105,"style":25},"e2",[101],{"_key":102,"_type":12,"marks":103,"text":104},"e2s",[],"Implementing an external library as someone who is normally pure or nothing was an enlightening experience. It was as painful as I expected going into it but with the knowledge I learnt from that I am less hesistant in out-sourcing difficult problems for easier solutions.",[],{"_key":107,"_type":8,"children":108,"markDefs":113,"style":25},"e3",[109],{"_key":110,"_type":12,"marks":111,"text":112},"e3s",[],"Being under time pressure is a hugely benefical learning experience. It’s where I find I grow the most when I need to make decisions now and not be given the privilege of being able to sit on it and figure it out later. I was forced to make difficult decisions like cut-out the pickup system which even an hour more time I would’ve been able to implement.",[],"A 2D infinite survival game created for the FishFest 2024 Game Jam, featuring A* pathfinding-driven enemies that hunt the player across a procedurally varied arena.","2024-09-07","csharp","https:\u002F\u002Frengarthered.itch.io\u002Ffishbornsurvivor","FishFest24",{"_type":120,"current":121},"slug","fishfest24","2024-09-01","completed",[125,126,127],"Unity","C#","A* Pathfinding",{"_type":129,"asset":130},"image",{"_ref":131,"_type":132},"image-d3ddbc1bd69c96ec98bd77dbdd086c9f973c1ff0-347x216-png","reference","game",[135,137,141,145,149,153,157],{"name":118,"slug":136},{"_type":120,"current":121},{"name":138,"slug":139},"An Eldritch Entree",{"_type":120,"current":140},"an-eldritch-entree",{"name":142,"slug":143},"Car Configurator",{"_type":120,"current":144},"car-configurator",{"name":146,"slug":147},"Memory Game",{"_type":120,"current":148},"memory-game",{"name":150,"slug":151},"Sheep Dog Game",{"_type":120,"current":152},"sheep-dog-game",{"name":154,"slug":155},"Little Large Lizard",{"_type":120,"current":156},"little-large-lizard",{"name":158,"slug":159},"Crazy Taxi Inspired",{"_type":120,"current":160},"crazy-taxi-inspired","RengarTheRed"]