Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Wampus

Two games in one, in 24 hrs.  :nw:
Posted an update. Actually has a win state now.  :-[ Also game is more balanced with difficulty levels to choose from.

As an experiment I put up a html5 version. Sound cuts out in Chrome sometimes but otherwise it's fully playable. It makes me want to put all my games up as html5 versions. 
Very cool. Sounds are impressive. I gather its intended for mobile devices because of the instructions at the beginning.
mentalthink it is very difficult. I think I should slow the action down.

Quote from: erico on 2013-Nov-19
So that is what a finite state machine is?
Heck, I have been using this approach to all my games ever since AMOS to all objects in game. Now I know the name.

You probably do a lot of things that have a given name and structure in theory, yet you thought them up on your own because you needed a practical solution.

You say seeing the game is motivating. Well, that is very motivating to hear too!

All enemies are updated every display loop. Most of what they are doing is very simple most of the time though. One thing that cuts down CPU bandwidth is not needing to work out field of vision for the enemies. If they can see you, you can see them (unless they are out of view so fading on your screen, in which case you can see them a little longer than they can see you). They also don't have pathfinding beyond trying to move to a new location and stopping if they run out of time or get blocked by a wall.

You know, you could probably build a big world with many, many AI npcs. If what they are doing most of the time is following some simple logic and only needing more complex stuff when they transition from one state to another, that can be very quick. I thought I would only be able to use that Field of Vision routine in a turn-based way, but I greatly underestimated CPU bandwidth. Even mobile devices are so fast nowadays.

Btw I did a quick speed test on an eee901 laptop and the Nexus 7. Seems to run at full 60FPS on both. I had my doubts, but since you mentioned it I thought I would check.
Thanks for the feedback. :) Since this game worked out reasonably well I'm working through seed ideas for a bigger, more ambitious game using some ideas gleamed while writing this one. This is great, since ideally 48hr game jams can sometimes serve to prototype mechanics that can be polished and expanded into bigger things.

The enemy AI is a finite state machine with 10 states:-

0 is inactive - waiting in a room. Go to 1 if made active.
1 is just seen player. pause for a moment in surprise.
2 is go after player, if player can be seen, otherwise go to 3.
3 is go after last location saw player in. If reached or blocked, go to 4.
4 is go after last direction saw player in (currently for too short a distance and time)
5 is waiting briefly outdoors at the beginning of the game, before going to 6.
6 is wandering after choosing a random tile to go towards.
7 is pausing from persuing player, if time to persue runs out or enemy is blocked. Go to 3
8 is pausing from searching for player before moving to searching in last known direction. Go to 6 if fails.
9 is attacking player melee style, if on same tile.

This is the second time I've used that Field Of Vision algorithm for real-time action. It wasn't designed for that but it turns out its fine! While I was making the game I realised there was a way to optimize it even further so it can be used for much larger maps. The game map is 120x120, so 14400 tiles. I can now push the map size to hundreds of thousands of tiles without slowing down the Field Of Vision in real time. What I will need then is to search the net for very fast pathfinding algorithms dealing with large tile-based maps (that can use memory and pre-calculation for efficient path finding).
Announcements / Lab Assault
Lab Assault

Above is a screenshot from Lab Assault, a game created at the Vancouver Full Indie 48hour game jam. The theme was 'evil genius'. Try it (please  :P).

Controls: WASD or arrow keys to move, mouse to aim, left mouse button shoots, right mouse button lobs a grenade.

Kill everything that moves. When you see dynamite on the surrounding buildings, touch it to blow them up. There are power-ups inside.

More complete version now up: -

PC download
Mac download
HTML5 in browser
Original PC copy as it was at the end of the game jam

Currently the game is at it was at the end of the jam, i.e. unfinished with a few buggy quirks that pop up from time to time. I'll update this thread with a more 'final' version once I've tweaked the gameplay, added missing features and updated the credits to reflect the fact there were more sound people helping me out. Currently there is no way to win the game other than last longer than you did previously. Also, when you die, you just fall over face down and kind of stay there, with enemies collecting around you in a dodgy looking scene.

I had a lot of fun.  :) Best game jam I've ever done. There were over 100 people at the event. It makes a big difference when surrounded by other indie developers to help out and keep spirits up, especially when running on 8 hours of sleep over the whole 48 hours! At first I was working alone but I realized there was no way I'd have time to do the art and sound as well as code. Luckily a pixel artist finished what needed to be done with his first team so could join me late in the second day. Sound was done by a group of people who were helping everyone who needed assistance. Almost everyone was using Unity or XNA. People were curious about GLB when they saw the game.

Back story: One night an evil genius, genetically bred for warfare, escapes the secret lab he was being kept in. Setting up explosives on the surrounding lab buildings he plans his revenge. If he kills enough lab personnel and the monsters being bred there he can use their DNA to create his own super-army.
Quote from: erico on 2013-Nov-13
Still, it feels to me that AAA studios still relies on visual and story (characters, etc) , similar to movie marketing, as their strongest point.

Yeah. If only story telling in the final product, rather than just the trailer, wasn't so terrible in most AAA titles! (and many movies). It really makes a difference to have a story worth remembering because once you've completed or played out a game, its the humor, fear, sadness and whatnot that carry on.

I find it frustrating that a game like the recent Tomb Raider reboot, which played fantastically as well as looked and sounded great, ends up dropping the ball when it comes to creating a compelling narrative. The setting is creative enough and Lara Croft as the player character comes off as very human and relatable yet the script and some of the voice acting are so bad at times they break the immersion. Contrast that with BioShock Infinity, which had relatively poor gameplay yet incredibly compelling story. I actually ended up cheating on that game, just to get past the lacklustre big fights and action sequences more quickly so the story could unfold more quickly. Ah, I'm ranting and there is work to be done!
Pretty good.

I imported a midi file from the first example song into Fruity Loops. Went as well as that can. Cool.
Quote from: mentalthink on 2013-Nov-08
Really the graphics in the game are only the first 5 minuts, if the game it's bad you can put the best graphics of the world but...

Oh yeah, that's my feeling too. Amazing looking games can be stunning for 5 minutes and then the gameplay has to impress, else they can quickly get boring. There are quite a few AAA titles I've bought lately that soon became so boring I couldn't continue playing, whereas indie games I bought long ago like like FLT, Spelunky, Minecraft and Terraria hold out so well.

I suspect the impressive visuals of expensively produced games are emphasized so much because they can be a marketing tool. People get excited by how a game looks before they get a chance to experience how it plays.
Entries for that jam were very interesting. There was even a game boy custom rom entry, though it wasn't finished.
Quote from: Ian Price on 2013-Oct-28
And why we need to get back to cars that don't have computers running them so that you can actually fix them yourself :P

Personally, my knowledge of fixing cars extends about as far as recognising that auto repair shops are where to take mine when it breaks down (and a basic understanding of electronics). If modern cars are so dependent on code, maybe I can actually do something to fix them.  :S

Don't snub your nose at me, mechanic. I'm a coder8)
Interesting visual representation of how much code goes into different projects:-

Simple iPhone game: ~10 thousand lines of code (seems about right)
World of Warcraft server: ~27 million lines of code
Average modern high-end car: ~10 billion lines of code

Yeah existing libraries are OK. Generally you are allowed to use old code so long as you say you're going to do so before the theme of the game jam is announced. You also have to make the code available to the other game jammers and link to it prior to the start of the jam, so that everyone can see and use it.

The thing is, these events are often called competitions yet treating them like a competition can be terribly frustrating. I won't do that anymore. Its like running in a race where you all start at different points on the track and other people have brought bikes, cars, even frickin' jet packs. If you're there to push yourself to cross the finish line on your own terms, or for the experience of running and finishing as a group, then its a rewarding experience. I much prefer thinking of game jams like that now.
A little proggy to scan all gbas files and list declared functions would be good. Adding the ability to see which functions never get called wouldn't be too difficult either, and commenting them out.

And Darmakwolf, you're right. It is so much faster compiling when skipping unchanged files. My codebase is all one giant gbas file so I'll split it up. Should help.

I'm doing one of those 48hr game jams in November. Its been many months since I've coded for fun. Gotta get back into it. :)
Can you think of a way to quickly determine which functions are included in your code but never get called?

I've noticed that the standard codebase I'm using for new games/apps is getting very large, which slows down compiling time. Isn't much of an issue but it would be nice to know what I'm using and what I'm not, especially on slower machines and for 48hr game jams, etc.

Using the profiler and running through all the possible main game/app states its possible to see which functions get called. Very helpful. Can anyone think of a way to quickly determine which aren't used, i.e. aren't listed by the profiler? For example, is there are a way to quickly list all of the functions included in a game or app and then use the information from the profiler to eliminate un-used code?

I'm thinking that my codebase should start off all commented out and then I can un-comment the code as and when its needed. Still, that doesn't help with projects I've already been working on.