Programming History

Behind the Programming

The Beginning

Going into this project, the two programmers knew we had a big job ahead of us. We knew trying to take on programming this kind of game with just the two of us would be difficult.
We tried to start off by trying to break down all of the systems we would need to create, putting them into what order they should be created in, and dividing them between the two of us.

Generation

The first thing that had to get set up was the map generation. When we were originally envisioning how this would work, we definitely were wanting to make it a little more complicated. We wanted players to have a wide array of ways to customize their game and map.

Early versions of the map generation allowed players to choose any size they might want to generate the map at. We quickly realized this could become very difficult to run with larger map sized and we would have to put in more limitations. Another issue we ran into was the randomization not being quite as simple as we wanted. It ended up being very easy to make a map that was unplayable.

These issues are how we arrived at the current system of all maps being the same size and a list of presets the player can use to customize.

You can find more detail on map generation on Jacob Coleman's page.

During this time, Brennan Sullivan was working to set up a basic main menu, along with defining a some of the major classes and functions.

Players, Pieces, and Networking

After getting a map to play on, we began moving forward to creating the players and pieces for the board. The pieces all had a lot of interaction with the map and UI, and we started to have some realizations.

After some discussions within the group and with our professor early on in the project, we determined that we were not going to be able to create and AI as well as we would have liked and still include all of the other features we were hoping to include.

It was decided that we would switch to a multiplayer focused game, and Jacob Coleman created a multiplayer branch of the game where he could begin bringing in Photon Networking assets and get them figured out before merging with the main project.

With Jacob working on the Multiplayer Branch, Brennan Sullivan tried to get the player, units, and settlement working in some fashion before they needed to be reworked to be Photon Networking compatible. He also attempted to set up the first UI iteration, and the first iteration of camera movement, and control working.

The Mergening

The next major milestone was definitely the merging of the Multiplayer and Main Branch. Asset and code wise, everything cleanly merged together and we did not lose any assets or scripts. Sadly the functionality of those scripts and assets did not play well with the new net code.

This part of the project was defined by us making a lot of mistakes and finding a lot of solutions as we attempted to get everything working together. Unit movement, entity spawning, player cameras, map synchronization, and the node system, every part of the game at the time had to be refactored to work with the new networking.

Alpha

After getting feedback on the presentation of our alpha, we had a lot of systems we wanted to try to get into the game before the beta deadline, and we still had a lot of refactoring to do to get everything working with the networking.

We added the game controller, the sound controller, systems to select the correct settlement and unit models. We added scripts to show settlement and building information when those are selected and a system to keep track of research. We added a tutorial. Similar to pre-alpha, it was a very busy period.

Beta

Much of the feedback we received after the beta presentation involved the need for more player feedback. Most of this ended up being updates for the artists that we worked to implement. There was also large amounts of bug fixing for the programmers. There were a small number of additional new systems added with this phase, win/loss screens and map options.

This type of work continued on through the end of development.