Then, the user can click on the level to add the chosen tile.
Particle System
I also wrote the final particle system for our game. I wanted a very robust particle editor that would add a ton of easily created effects to our game, so I went with a component particle system. This was very similar to our object system, with each particle emitter having a vector of particle “effectors”, or different ways to affect the particle. Then, the emitter would run the update loop for each effector, which would change the way a particle’s movement.
Graphics Engine/Shaders
I also wrote a decent amount of graphics code for our engine. I helped write the main graphics draw loop with the help of one of our other programmers but spent most of my time writing shaders. I wrote the lighting system in our game using a simple point light shader. I used uniforms to send in all the data for the lighting and essentially made everything else darker while lighting up the area around the point. I also implemented bloom in our game by running a gaussian blur around the object to give it a glowing effect.
Team Experience
Lastly, I want to discuss the experience I had working as a lead on such a diverse and large team. This was the largest team I had worked on to date, and I did not know anyone on the team beforehand. I wanted to experience working with people I did not know, as before I had only been on teams with friends.
As the tech lead, I talked to art team constantly. Since we were a custom engine, I was in charge of helping our artists get their assets in game using the editor. Making tools for non-programmers is difficult, but over a couple of iterations we had a system that they could use and understand. I also worked a lot with our art lead on particles, as he had the main vision for how they should look. Him and I created a ton of particle effects together, as he would ask me to make specific particle effectors for the effects he wanted. We made fire particles, smoke particles, enemy shot particles, and much more. We also iterated on the lighting system together, as there were many times where the art team thought that the game was either too dark or too bright. Outside of that, I mainly helped our artists with tech issues and editor problems they encountered throughout our development time.
I talked a lot to the designers about how to improve the editor and the different ideas they had for gameplay. We iterated on many different UI principals for the editor until we came to a finished product that helped their workflow. Then, when it came to gameplay, I would ask the designers what kind of things they needed for gameplay, then designate specific tasks to the rest of the tech team. With our producer, we came up with milestone goals and scheduled out what each programmer would be doing on our team.
While this was our first foray into a cross-disciplinary team, I felt that I gained a lot of experience working with artists and designers. I gained a much better understanding of what artists and designers need in order to get their work into a game, along with learning how to make something better through iteration. As a technical lead, I felt that I did a lot more work than I really should have. I should have talked to the other programmers more to offload some of the work I was doing, but I felt that the gameplay they were doing was also important.