So I’ve been a little busy. August has been a hectic beast already, and only half of the month has passed us by.
- Finished up a 10 week proof of concept for an e-commerce project utilizing Unity3D with a major Canadian retailer
- Ran my first actual play-test for Simple Soccer
- Started working on an idle game framework for future projects
- Attending a wedding on the other side of Canada, and been preparing for that adventure
I’m only going to talk about points two and three here. Two topics for the price of one!
Last night I played Simple Soccer with some friends. It’s the first time I’ve actually tried the game out with multiple players – an important thing to test when the game is exclusively multiplayer. Luckily two of my friends are working in Quality assurance, and they gave amazing feedback. Another friend of mine is a huge Rocket League enthusiast, so his perspective on games with balls and nets was very valuable. Another friend is Italian; footie is in his DNA. The last member of the group is my partner at Secret Team Games; his opinion means nothing.
The play-test went better than expected.
There are some issues with the GUI – it’s very inconsistent with mouse / controller inputs, ironing those out is going to be tedious, but very important. Otherwise the game was very very well received. I’m going to attribute the positive reception to two things; competitive local multiplayer games with a low skill floor and a high skill ceiling are always a blast to play with friends, and I bought everyone beer.
There was one major change that came up during testing that I absolutely need to address; 4 player is nowhere near enough players. 8 player was thrown around a lot, but why stop there? Right now the plan is to increase the player count to 12 players for 6 v 6 soccer. I’m going to predict that my next post is going to outline why this was a bad idea, but who knows, maybe it will be brilliant. The biggest downside that I can think of right now is that testing with 12 people is going to be expensive if I want to provide beer again.
Now on to the idle game.
The working title is Little Bit City, and it’s only a working title because I am nowhere near ready to commit to that. The initial idea was to basically make SimCity the idle game – you have building that produce water, electricity, sewage etc. As I got into developing the project I found that simplicity was key… And now the game is called SimpliCity. Nailed it.
A common mechanic in idle games is the compounding costs of things. For example, the first time you build house in SimpliCity, it costs $10, and the second time it costs $12. The increase is 20%. What I didn’t think of when I started developing the idea was that the costs would get out of control rapidly.
You see, I was storing how much cash the player has and how much a structure costs / produces as an integer. The limitation I ran into very early on was that a signed 32 bit integer’s upper limit is 2,147,483,647. For the better part of a day I ran into limitations of the various value types available to me in Unity3D. I won’t go into much detail, but I needed to generate my own solution.
Basically BigDouble is a struct that stores a double, and an int. The int represents a “multiplier” for the number, and the double stores the first 3 digits of the value. For example; if I wanted to store the number 760,900, the double would be 760.9, and the int would be 1. The 1 means that the last 3 digits of the double are after the decimal place, and that the number is really 1,000 times larger. If I wanted to store 2,147,483,647, the double would be 2.147483647, and the int would be 3.
This system allows me to store very very large values without running into too many issues. The biggest drawback is after a certain number of digits a double starts to become inaccurate. However for the needs of SimpliCity, I don’t really care if relatively small numbers don’t impact a very large number. For example adding 10 to 10,000,000,000,000,000 is basically insignificant, especially when the player reaches that point of the game, nothing would cost 10.
I’m going to clean up the script for BigDouble and release it eventually, hopefully someone else finds this useful.