I would like to thank everyone for rating and leaving valuable feedback on our game. We've gotten over 50 ratings, our highest ever. We're really happy with the results. Our best ever score in Audio and 2nd best in overall and mood. Only 0.004 away from our best in mood.
We've been working on a post dare version in the meantime based on some of the feedback and I wanted to discuss the new features and some challenges we faced.
1) Intro cutscene
This is our first entry with a cutscene and I'm really proud that we managed to get one in on time. I had started working on an additional cutscene for the intro but ran out of time. So i've been working on fleshing it out since then. I kept running into issues with timing of the various elements (Coroutine hell). Having multiple coroutines fire from a single method can very easily mess up timings. Using yield return helped here but in future I would like to refactor the entire Cutscene system to be more event based. Having certain events fire on cutscene start, end, skipped etc.
2) Controller support
Unity's new input system is vastly superior. We already had partial controller support for free. However certain aspects were designed with K+M in mind and UI doesn't work without some tweaking. We've implemented full controller support, including platform specific button prompts and UI navigation. One unfortunate issue we ran into is a unity bug where WebGL does not pick up the controller as an input. However the Windows build now has full controller support. We would still recommend K+M as the best way to play but controller should now work from end to end.
Another issue with controller and web builds more generally is cursor locking. When the cursor is not locked movement would abruptly stop when the cursor goes outside the browser window and the interact prompt was off-centre until clicking and gaining mouse lock. Even setting CursorMode to Locked did not fix this issue for us in all cases.
We did manage to fix the latter issue by switching how we ray cast for interactable objects. Before we were doing Ray ray = Camera.main.ScreenPointToRay(mouse.position.ReadValue()); however this had the issue that if the mouse was not locked then this could give strange values. To fix this we replaced it with Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f)); this then uses the centre of the viewport as the point to cast rays from, which is unaffected by cursor locking.
I have been unable to fix the former issue though. So if there are any issues with movement then make sure to first click with the mouse upon spawning in to force lock. It should already be locked in the browser but this varies by browser and Firefox especially has much stricter cursor locking rules.
I will continue to investigate this over the next few days but in the meantime that is a workaround for any controller specific issues.
3) Minigame Tutorial
Some people mentioned that the minigame is a bit difficult. One small change we made to help with that is showing the interact prompt on the first stage of the minigame. This should hopefully make it clearer that you need to click to match the signal. The speed will also slow down slightly on later rounds. This was already present in the original version but has been slightly increased.
Closing remarks
We've thoroughly enjoyed playing and rating dozens of interesting and fun entries this dare and looking forward to the big 6-0. We'd like to congratulate everyone who made a game and hope to see you all again next time.