challenges
key Collaboration Challenge
while collaboration overall went quite smooth thanks to likemindedness and a shared vision, there were ofcourse some challenges. an example of achallenge I encountered:
Challenge & Resolution:
Situation: Mid‑project, a teammate spent weeks implementing a voxel‑cone‑tracing feature that, unfortunately, in practice, introduced noticeable visual artifacts and didn’t match the polish standards we’d set.
Task: Although I wasn’t formally the rendering lead, I was recognized as our graphics specialist, so it fell to me to evaluate its viability and steer the team.
Action: I convened a discussion, began by acknowledging his efforts, then presented the artifacts and incorrect visuals to the team. I walked the group through our quality criteria and scope, and suggested we momentarily shelve the cone‑tracer to focus on refining our existing ray‑marcher to produce a better end product.
Result: The team acknowledged the visual gap and agreed. We refocused on our proven pipeline, added other visual effects like sub‑voxel ray‑marching, and realigned ourselves on our scope and priorities, which resulted in a more refined final product.
Key technical challenge
there were many technical challenges we had to overcome during this product but below I will mention arguably our biggest technical hurdle:
Challenge & Resolution:
Situation: Beginning of the project, We had to decide on a storage medium/traversal method for our voxels. The storage medium/traversal method would influence most of our other tasks and would also decide which oppertunities we had in our voxel engine. these choises would decide or heavily influence the following things:
performance
memory usage (a key difficulity of voxels is keeping the memory usage reasonable
world scale (inferred from memory usage and performance)
voxel scale (also inferred from memory usage and performance)
ease of implementation and research time needed.
ease of integration with engine systems like collision detection, rendering and terraforming
our scope (inferred from ease of implementation and research time needed).
the biggest problem which hindered us from making a decision was that performance comparisons between these different methods are very difficult as they all have their advantages in different situations and fail in others. Because of this, Doing research online to determine the best method proved unfruiitfull. We figured that the only real way to find our which is best is to implement multiple methods, for which we didn't have the time.
Task: A storage medium and traversal method had to be decided on quite quickly due to our limited amount of scope.
Action: I convened a discussion and since I had the most experience with working with voxels I felt that I could share my input on which path I think was best. Personally I wanted to go with SVO storage and traversal since I thought it showed the most promise but did acknowledge that given the integration with other systems, our timeline and the inexperience of other team members with voxels that a simple grid with DDA traversal is likely best due to it's simplicity.
Result: In the end I decided to prototype some other methods (more on that down below) while we all agreed that atleast for the time being a grid and DDA would be the best choise. After prototyping, the other methods seemed to be too overscope for our project and thus we stayed on a grid and DDA with subvoxel traversal added later on.