My previous approach was to make posts here specifically when milestones were reached and completed. But it’s clear that’s not working to keep a regular flow of communication both for the sake of visibility, and holding myself accountable. I had gotten too concerned with only reporting progress, that ironically I was not reporting quite a bit of progress I was making.
So from here on out I will be making at least one post a week regardless of progress, to talk about what progress has been made.
For context it is also worth noting that this game is currently being worked on as a final independent project for university. And while I intend to continue developing it afterwards, it currently suffers from split attention with another, larger course project along with job hunting. These are not excuses, as I believe my initially assessed timetable was aggressive, but fair. But I feel I need to raise the point as the amount of progress made would reflect poorly if assuming it’s my only major endeavor right now.
So what progress has been made? I’ve further developed some ideas for the artistic style, as suggested last time. But this has been entirely secondary to completing the engine components. Having the engine completed is a more critical bottleneck to further development, and as suggested above the current portion of the work is for course credit, and it is not a course in art.
This is all but complete, and would have been so except for an unusual snag that prevented easy translation of my visual prototype to the game.
All major functionality is implemented and working though. The player can move through the world, change facing, be blocked by objects including distractions which appear and vanish based on the player’s facing and the distraction’s source. A generic algorithm was implemented for this that takes the player’s facing, location, and other object’s location along with a value in degrees for field of view. All variables are based off the internal world coordinates, not the coordinates translated into visual space in Unity.
Coding on all functionality has been done as independently as possible so that not only could another system of translation from internal world space to visual space be plugged in, but many generic methods (like the facing one above) are part of a library that is easily usable for future projects.
As mentioned above the previous visual model could not be easily copied over for a variety of reasons, primarily the difference in how movement is handled. In the previous system this was based directly on the player’s moveBy property each step. But this felt too dependent and open to problems with order of processing down the line. So for a more generic implementation, the visual model now uses the raw object position relative to the player’s position. This way it does not matter how the player’s movement is handled, and it can easily be changed in the future without affecting the visual model’s functionality.
Unfortunately this change meant most of the algorithm needed to be rewritten. This is largely complete, but it requires a good amount of tuning. The biggest challenge is making sure that the visual translation aligns with the player in a logical way. While objects currently move along varying sized parabolas depending on how offset they are from the player’s x position, they do not align on the visual Y axis as they should. Ex: when player’s actual z position is equal to a series of objects’ at varying actual x positions, we want to see all of these objects aligned with the player visually (same visual y position).
Other model to dos:
– mirror the effect for objects where x < player.x – easily done, just waiting for main algorithm to be more finalized
– remove objects beyond a certain distance – easy
– make shallow depression in parabolic shape over horizon so objects can first rize over it – straight forward, if not easy. Just need to offset the parabola formula used for each mirrored half so that the peak is offset from player.x
– tune scaling with distance formula – straight forward, but time consuming, this should not pose a serious obstacle
Thankfully, since I took the time to keep the visual model separate from the engine’s model the above goals will not prevent further development. While the main issue with the visual model remains a priority, I can work in parallel on other development tasks, particularly with the latter set of to dos.
Priorities going forward:
- W (this week) – implement 1 full example puzzle and dialogue, resolve visual model alignment issue, stand-in art assets
- W+1 – implement content, draft art assets, finalize visual model, implement distractions blocking visuals
- W+2 – implement and tune content, draft art assets, license-free stand-in music
- W+3 – implement and tune content
Note that the priority will not be on having finalized art assets, but something representative that communicates the intended tone of the game.