I had a great time working with everyone on the project. A few big learning points for me are below. I learn a lot by coding with other people, which I do not get the opportunity to do often being a hobbyist.
Sweet screenshot from game below
The importance of a diff tool with version control.
I had my first big merge conflict when RB and I both implemented the IPlayer interface and Player1 class differently. I need to spend time really learning about the diff tool and what the different colors mean and options are for deconflicting merges. I always want to clear the merge conflict quickly to keep working, but the less time I spend resolving, the worse problems I create in my code base.
Referencing the Task Manager often and writing concise tasks (Trello in our case)
Near the end of the event, I wrote a task something along the lines of "Hook my collision code into RB's new events". This is very vague and not useful. What I meant to write was 3 separate tasks:
1. Reduce a player's lives by one whenever their ship collides with an asteroid.
2. Add an explosion sound whenever a player collides with an asteroid.
3. Add points to a player when an asteroid is destroyed by one of their bullets.
If I had assigned these three concise tasks to myself in Trello as opposed to the vague one I wrote, it would have been clear what I was working on. Perhaps RB would have recognized I was working in the Player class and maybe not jumped in there without seeing where I was at. This would have prevented the aforementioned code conflict from ever occurring.
Couple of other cool things I learned
- UV Mapping XNA requires a UV Map to apply a texture to a model through the content pipeline. I now know how to add one to a model now in Blender.
- 3D collision Detection I learned 3D collision detection using spheres.
- Default values for get only properties How to set the value of a get only property in C# 5.0 by marking the set property as private and setting in the constructor. like:
public Player1 { public int Lives { get; private set; } public Player1() { Lives = 3; } }
Thanks for everyone who came out and worked on Asteroids3D. Hopefully I'll be around for the next collaboration.
Starfield tutorial i referenced to make the background: http://www.gimpusers.com/tutorials/starfield-tutorial.
Asteroid tutorial I referenced to make the asteroid: http://www.blenderguru.com/tutorials/how-to-make-a-realistic-asteroid/.
Textures I pulled for the asteroid and bullet came from: http://www.textures.com/.