Category Archives: XNA
So, finally, with a few hours to spare, i submitted Simcom Corp. to Dream Build Play.
The final day was a real stretch, and sat at the computer for 18 hours. There are still a couple of features that i wanted to put in, but i didnt have the time, but the submitted version is very much playable and polished. In august/september i’ll resume work on the game for a release this fall on Xblig, PC and iPad.
Almost all of the graphical assets are done, and i’ve spent the weekend implementing them and replacing the placeholders. This is taking waaaay more time than i thought it would, and it feels like i’m moving along in slowmotion, which would be a good thing if it wasnt that time is actually running out.
It’s now 4 weeks left, and yet i havent implemented all graphical features, adapted it to xbox controls, scripted objectives, nor polished…
Either it’s time for panic, or time to take a few days vacation from my day job…
So, the graphics are coming toghether real nice. The designer, Murry, is an excellent artist, and it shows he has great experience from making assets for games. Ill be uploading some screens later on when it’s all implemented.
In the end, it turned out to be 58 folder with animations, so it’s going to take some time though. =)
Also, i wrote my own implementation of the a-star pathfinding algorithm, and works as it should. But i’ll probably have to try to make it more effecient. The map structure to support the algorithm is going to be really helpful aswell, when it comes to determine wall and top positions and drawing some supporting sprite elements.
I’m starting to feel a bit stressed about this, since the absolute deadline is less than 5 weeks away, and i havent even put it in playtest yet, let alone balanced it, or properly implemented all the graphics.
How well polished does it need to be upon submission?
I must admit that when i started to code an elevator system for a building sim, i thought it would be as easy as max an hour of work.
– Push the button, enter the elevator, exit on your floor.
And in theory, it is very easy, especially when you only have one user of the elevator, and just a couple of floors in your building.
But, this turned out to not be working so well when you have more elevators and a really tall building and 100+ employees to use the elevator.
A worker with a high index and a late update (compared to all workers with index below), comes to the elevator and push the button. The elevator is already in use, and thus the worker has to wait.
This goes on almost forever, because workers with lower indexes, who’s also waiting for the elevator will be getting it first since they will always push the button before a worker with higher index, because they have their update methods earlier.
So, what needed to be done was a queue system that records which worker was there first, so that their “button push” will be dealt with in a first in, first out – manner.
But, if there is always the fifo-person to use and order the elevator to a certain floor, then he could be the only passenger at any given time. Ofcourse this is not really effecient, nor user friendly. And it wasnt they way i wanted it to work. More people are supposed to ride it at any given time.
But, this is also supposed to be effecient.
The scenario turned out like this.
- Push button, to order the elevator to my floor.
- The elevator cart is on my floor, was it because i pushed the button, or is it going to pass me?
- If it’s going to pass me, stop and enter the elevator ONLY IF
– There is a passenger slot free.
– The elevator is moving in the direction i want to go.
– The elevators current destination is further or equal to my destination.
- If it’s because i pushed the button, enter the elevator.
- Wait until the elevator is on my destination floor.
And then there is the twist with draw order, when i have multiple elevator carts in the same elevator shaft, but thats another story! =)
Spent the larger part of the day of straightening out some bugs, ive been dragging with and been annoyed about.
Thing is, when i set out to do this game, i didnt really realise that when doing an office simulator, i actually hade to do AI for all things at the office. This is including a somewhat smart elevator system, and elevator queue system.
This is the thing thats been bugging alot. It didnt properly register when somebody got off the elevator for some reason. And only sometimes.
Now, this is probably the most annoying part for most devs, that something only happens “sometimes”, and its really hard to figure out what the actual scenario is when this happens. But anyways, i figured it out, and im glad thats out of the way.
Still waiting for the last bits and pieces from Murry the designer. Should be able to do a video/trailer in about a week or two!
So far, i’ve taken the easy way of doing things. Among those things are the elevators/transportations.
When i first started out on this game, i was thinking that the infrastructure allowed to be built by the gamer should be very strict, and thus only enabling building blocks to be placed directly on top of another, and the transportations are to be put vertically between building blocks. And therefore the entire building would be a homogenous slab of bricks. But it would also mean that it will be sort of a boring building.
What i really want is that the gamer should be able to create any type of building they want, wether it be a giant homogenous slab of bricks, or a 40 stories twin tower, with alternating horizontal positions of the building blocks.
This would also mean that the elevators/transportations must be limited in height so that they dont overlap a building block
So the game should enable the gamer to put elevators like this:
Elevator 1: Bottomfloor = 1, Topfloor = 5
Elevator 2: Bottomfloor = 4, Topfloor = 15
… instead of as it is now:
Elevator 1: Bottomfloor = 1, Topfloor = 15
Elevator 2: Bottomfloor = 1, Topfloor = 15
This though, opens up for a near total rewrite of the AI of the workers in the building, because then they have to potentially look for more elevators/transportations.
I’ll have to think about this….