We’ve finally finished Inside Out! We got in almost everything we planned, at least in terms of game mechanics. The game still needs a lot more furniture tiles, and we didn’t get chance to add Adam’s text, which really sets the tone – so we’re hoping to fix all that up for a post-jam version soon.
So if you fancy a bit of creepy survival horror, you can download Windows and Mac versions here: https://dl.dropbox.com/u/1633884/insideout/index.html
Let us know what you think!
Totally forgot to post yesterday, ah well. I made a lot of progress, but the only thing I specifically remember doing was adding the first sound effect – and I only remembered that because when it played this morning I scared the bejezus out of myself 🙂
Today I finally managed to get the field-of-view ‘shadows’ working. I’m quite pleased with the results, though the interaction with objects in the rooms could be nicer. As is often the way I went through several really complex methods that sorta worked before finding a nice, if brute-force-y ~50 line method that did the job perfectly.
The floor texture is modulated/blended with a series of light textures (radial gradient fading from opaque in the centre to transparent at the edges), one placed on the player, and one in each room (if the light is turned on). The field-of-view is generated by casting a bunch of rays out from the player in a circle, building a triangle fan from the results, and using it to mask the floor.
The objects in the rooms unfortunately can’t be rendered using the same method as they cause the floor texture to show through them, so for now I just make them visible (without blending) if any of the rays go through their tile.
We’ve nearly got the level generation integrated, it still needs a couple of fixes but once those are done I’m sure I’ll discover a boatload of issues that just don’t happen to appear on my simplistic test level!
Only other things after that are:
- allow the player to hide inside objects
- add audio cues to the environment (creaky floorboards etc., to give you some idea of where the beastie is, especially while you’re hiding in a cupboard!)
- add a few more sound effects
- add a lot more furniture tiles
- implement final text
Right now, that doesn’t seem too bad.. though perhaps I’ll change my mind when the new levels start destroying everything!
Room lights work again! But no shadows. The system I was going to use relies on there being a fixed number of light sources, which isn’t the case in this game. Hmm. I may be able to fix it later, but I’m not convinced. It looks okay as it is, and I’ve got gameplay to write!
Biggest thing I did today is something I can’t really show you in a screenshot. You see that door southeast of the player? That’s not meant to be there – in his house, I mean. If he walks out into the hall, it disappears. In true Lovecraft style it leads to a weird series of rooms somehow occupying the same space as his house – when you pass through the door the real world fades into obscurity and vice versa. Looks nice – but only as an animation 🙂
Tomorrow will be AI for the thing.. in the dark.. and hopefully I’ll get to integrate Tom’s level generation code.
Probably the biggest thing I did today was a rewrite of the loading code to parse a JSON description of the level rather than a flat ASCII map – mainly because I was concerned we’d run out of single characters to express all objects in all orientations in all special cases etc. I hadn’t used JSON in C++ before; a quick bit of googling turned up jsoncpp, which worked like a charm (A+++ WOULD COMPILE AGAIN!!1)
I wrote some classes to represent rooms and items, with a generic interface to ‘interact’ with items. There are no weapons in Inside Out, but there will be lots of objects to interact with – principally by hiding inside or beneath… Though the only type I added today was the light switch: as I intended I implemented the room lights at first with vertex colouring per tile, but we also want the player to carry a light later on, and I’m quite keen to get nice looking shadows too, so I disabled it and gave the player a blended light source. I haven’t yet rewritten the room lights with blending, that’s first thing tomorrow!
Also, as you may have noticed on the screenshot I’ve added a single line of status info. The hope is by Sunday it will be overflowing with blood-curdling terror (courtesy of our final team member Adam), but for now I’m just using it to make Monty Python references.
Today’s lesson was: if no-one on your team is an artist, don’t spend time writing a complex auto-tiling system that needs someone to draw forty-two zillion tiles!
What I did get done was the scrolling world, loaded from a text file. The plan is to have this ‘file’ generated on the fly by a python script written by my teammate Tom. There’s a door in there too, which you can open and close at your leisure. I’m going to call that ‘gameplay’.
The game is a survival horror so lighting is very important, so that’s next. I’ve recently been writing a lighting system using blending that should give us nice shadows. I’ve also got to fit fog of war into the equation somewhere too, which should be interesting… we’ll see!