Inspiration

About two weeks before the hackathon, rough storms hit California and led to power/Wi-Fi outages throughout the state. Our midterms were delayed, lectures were cancelled, and some of us could not attend class. As we were brainstorming for SacHacks, we looked at a map of Sacramento and thought: what if we made a game about connecting the different regions of Sacramento, all the while fighting against a series of storms?

What it does

getsac.online is a strategy game where you are tasked with-- you guessed it-- getting Sacramento online! Players will have to work with their budget to plan, place, and maintain their service stations throughout the Sacramento region. Diminishing returns are built into the game design in the form of increasing costs for station placements, cable placements, maintenance, and repair, pushing the player to think about their network’s efficiency. The goal is to get the highest score, which is calculated as a function of total money, total stations built, and the number of service areas covered.

How we built it

We used the Unity game engine with C# to build the game.

Tim: I spent a lot of time integrating all of our work to form a finished game. Through the power of git version control, this was relatively easy. It was fun delving deep into the features git has and how we can use that to work on the same project simultaneously.

Peter: I used Google Slides to create the design plan for getsac.online. This allowed our team to have our visions of the game on paper and get us all on the same page. I also used pixlr, an online Photoshop tool, to make mock-ups of the visuals in the game and create/modify royalty free sprites. I utilized Desmos and R to visualize the functions that would represent diminishing returns and increasing marginal cost in the game.

Aidan: The Sacramento map graphics was produced using data on OpenStreetMaps. Since there were no premade maps available that fit the theme of the game, I generated a vector map using Maperitive with a theme similar to a blueprint. With the Sacramento map, I drew out various service areas in Unity that would be used in the mechanics of the final game.

Jun: I implemented various functions for the game. I mainly programmed on the data structure for the service providers and with the help of Tim also worked on the connection logic (logic behind deciding whether or not a station was connected to wifi or not).

Challenges we ran into

Tim: A challenge I ran into was being constantly distracted by the game. We kept competing amongst ourselves, leading us to lose valuable work time. In the end, I’d say it was worth it though.

Peter: I had never managed a project of this size before, so it was a challenge to get everything done properly and orderly. I also had never designed any part of a game before, so making my ideas into a reality turned out to be harder than I had imagined. Determining the “game balance” for the numbers was quite a daunting task, but experimenting with different numbers and isolating individual variables made it much easier.

Aidan: Generating a good map for Sacramento proved to be more challenging than we originally thought. At first, I tried using the Mapbox SDK for Unity in order to insert an interactive map into our game, but that proved too difficult to implement within the timeframe. We instead used Maperitive with an OSM source to generate our own map design based on custom rendering rules.

Jun: The connection logic behind the “chain” or wifi signals was the most difficult. We had to come up with a to represent the “flow” of the signal from the source to the stations. For example, If our stations were connected this way: Source -> A -> B -> C If station A was deactivated, then stations down the chain, B and C, needed to lose connections as well. In our original implementation when station A got deactivated station B would still have connection because it thought that it was still receiving signal from C. So we had to put in logic for which stations depended on which stations for its connection status.

Accomplishments that we're proud of

Tim: It felt really good to put together all of the elements that make this game what it is. Watching it transform from something with simple shapes and rules into the complex game it is now was really satisfying.

Peter: I am proud of how clean and satisfying the game looks, especially for my first time designing something like this. I have a passion for idle games, and creating the UI/UX for something like an idle game made me feel extremely happy.

Aidan: I’m glad we were able to bring together all our effort to make the game according to our original ideas. I used to play these sort of games in the past, so creating one is altogether an interesting experience.

Jun: After we were done with the first build of the game we had a moment where one member of our team was playing and streaming the game while the rest watched. All of us were engaged in the game and even started coming up with new strategies to do better in the game. When we make a game we obviously want to make a game that is fun for others to play, but I was very happy with how we were able to enjoy it as well and hoped that others would strategize and enjoy the game like we did.

What we learned

Tim: I learned that it is important to keep code modular and clean from the beginning. Any code that we didn’t try to organize quickly became more difficult and harder to work with.

Peter: I learned how to develop in Unity. While I didn’t actually code anything, I learned a lot about designing UI/UX and how to balance progression in idle games. Also, making sure the entire team is on the same page is extremely important when designing the game so that each of our visions is properly implemented into the game.

Aidan: During this project, I learned how to utilize the various tools in Unity for the first time. Specifically, utilizing prefabs to design the different areas on our map. Bringing together all aspects that are required to create a game was also a new experience for me.

Jun: I think this was the most efficient I’ve seen a team work together. Each one of us had specialized roles and divided up the tasks so that we were able to build up on each other’s work constantly and progress. We also had a clear plan along with a game design document that really helped us stay on track and on schedule. I think in my future projects I will take enough time with my team to have a concrete plan and to streamline the working process. Overall I learned in real time the benefits of careful and concrete planning.

What's next for getsac.online

As for UI/UX improvements, we can highlight the path to the internet source when you hover over a station, as well as highlight all the stations that that station is connected to. We can add a soundtrack in the background and overall just polish the design more.

As for gameplay changes, we can make the game into a true idle game by adding upgrades that change progression, increase the size of the map, add more internet sources, randomly generate the location of the source(s) each game, implement some sort of saving and loading system, and include an interactive tutorial.

In addition, we can introduce a competition aspect by adding AI to compete for areas.

Built With

Share this project:

Updates