Sunday, May 6, 2012

making this fun again

I made a few tweaks and adjustments (read: ugly ass hacks) to the implementation I had for converting the 2D buffer format I created for storing generated maze data into actual objects that appear in the game. It looks like this part of the system is working fine now, but the mazes generated still seem like they could use some improvement.


For one, the algorithm itself assumes that we're generating a maze with a set starting point and ending point, which isn't really the case with this game. We just want something to navigate around that has some twists and turns and isn't just straight corridors all around. It does need to have plenty of alternative pathways to get from point A to point B, because we're really navigating to a set of randomly-determined points where macguffins will be placed.


The other thing, and perhaps if this alone were cleared up, then a more straightforward maze setup might even be interesting enough on its own, is that even if there were a start point and an end point, it would likely be impossible to navigate between them, probably due to some bug in my implementation. So working this out is going to be top priority. Once that's done, then we'll see about adding some things to collect and maybe revisit the idea of adding some AI-controlled things-to-avoid.

Saturday, May 5, 2012

a maze

For Ludum Dare 23, I decided to have another try at a game I had attempted to make early last year, in which you navigate a maze wrapped around a cube that rotates as you cross each edge so that the side you would wrap around to flips up to face the viewer. At the time, I had tried a few different solutions to the flipping-around problem, none of which worked at all, and usually involved the cube catapulting the player off into infinity.


In Patience, I ran into a similarly perplexing issue with rotating this cube-of-cubes around in 3D space and still maintain some kind of intelligible structure so that the game knows which cube you're pointing at with you touch the screen. The problem is really that the cube is rotating around in 3D space, and so the real positions of the various points on the surface of the cube are just all over the place and require a bit of 3D math to normalize everything into a neat and usable structure. So I decided to just make it all static - the cubes don't actually rotate or move around at all. It's really the camera orbiting around the cubes that's controlled by the touch-drag input.


So for Ludum Dare 23, in the spirit of making some kind of "tiny world" (the community selected theme), I thought "well, if I were to take a maze and make a sort of planet out of it, that might work." And making things that are normally round in real life into boxes and cubes seems like a fashionable thing to do in games. So I went and revisited the maze-on-a-cube idea, with this camera-orbiting-around-the-cube idea worked in.


I should mention that I only decided to do the maze idea after going through a few other ideas which I was just getting way too ambitious with. A maze with dots, i.e. pac man without the ghosts, but in 3D, seemed like the right combination of coolness and simplicity.


Even with this simplified concept, the edge-flipping mechanic still gave me a lot of trouble. I spent the majority of the time I had for the jam just getting this right. As usual, the solution turned out to be much simpler than the various attempts that preceded it. There's a concept of "face local space", and if you go beyond certain boundaries within this space, you're off the face, and you're moved onto the adjacent face. The rest is really just keeping track of which faces are adjacent to each other, rotating the player's world-space movement around, and slerping the camera over.


The overwhelming feedback I got from this was that it is too short, which struck me at first as a little ironic for a theme of "tiny world", but ok, point taken. So I started working on a way to randomly generate mazes that wrap around this cube, because the alternative to building this out into a more complete game would be to make lots and lots of maze levels, make a level editor, and so on. Generating the mazes, in the end, requires less manual effort per unique maze generated - and, given that some kind of a mapping is needed to generate the maze data anyway, it doesn't require much of a stretch to simply be able to serialize that data into a file format. The only other thing aside from that to build an editor into the game would be to add a mechanic similar to the one in Patience where tapping interacts with the cube (i.e. toggling a wall space on/off) and dragging moves the view around.


The editor might come later. There's also the matter of simply getting the serialized data in and out of the game and onto some kind of permanent storage, which on mobile devices is not quite as straightforward as it is on PC. There's usually some kind of cloud sync-y type stuff involved, which would be completely new territory for me as a developer at this point. Which would be cool, no doubt, and I'm sure that's something that we'll be seeing in neocade games at some point if not soon - so.. who knows. I haven't really thought about that much just yet. When I do it, I'd like to do it right.


Anyway. For the sake of making this a complete game experience that's worth a buck forty two, I'm working on a system for randomly generating the maze each time the game is played. This way, you're always getting a fresh thing to navigate around, and we don't have to go through all the pomp and circumstance of writing hundreds of levels. Just generate the mazes and be done with it. Pretty simple. Still thinking through whether it should still be 'collect all the noms to win' or just 'find your way to the exit'. Collecting stuff needs a somewhat more open labyrinth, rather than a maze with a definitive start and end point, which is what the maze generation algorithms I've looked at generally do. Modifying one of them to make a more open structure seems easy enough though (fingers crossed)


As I said before, the capabilities do exist for this to grow into something a little more user-editable, so if there's enough of a demand for such I thing, I will most definitely see what I can do.

Thursday, February 16, 2012

open world games are bad for my productivity

The past few months…could have gone a little better in terms of productivity. This game called Skyrim came out, and lots of people were talking about it, and so I thought I’d get a copy for myself and try it out. Well, 570 hours of play time later, and only 4/50 achievements still locked (gotta love Steam), I’ve managed to explore the play space quite a bit. I’ve tried out several different characters of varying races and skill tree builds and played through the game to varying degrees with each, noting the differences in game play between each one. Not a whole lot of progress as far as making games for neocade, though.

Still, if there is one thing to be learned from this, it’s that open worlds are absolutely fascinating to me. I love being able to explore the fantastic randomly generated worlds of Minecraft, and have to stop for a moment to marvel at the grand vistas within the world of Skyrim. Before these, though, I would be doing speed runs through Super Metroid, playing through and re-playing Zelda game after Zelda game, and living an alternate life as a master criminal in Grand Theft Auto 3.

Minecraft is particularly fascinating to me for a couple of reasons:
1) It’s able to generate entire three-dimensional worlds at runtime that are believable enough to warrant exploration.
2) The player is able to build a huge variety of things within this world.

The block selection UI element of Patience is somewhat inspired by Minecraft. It just seems like such an obvious way to do it that it would be silly not to interact with the blocks that way. Earlier prototypes of the game did involve building up a 3D form out of the blocks, but I couldn’t quite put a game around those. I’m seriously considering adding some kind of block form editor thingamajig as an update. I just want to be sure that it fits into the game.

Monday, December 19, 2011

post ludum dare post

Well, I didn't quite finish whatever it was that I was working on for Ludum Dare 22. To tell the truth I had some trouble with my idea. A couple of specific things come to mind:

1) 48 hours to do the /entire/ game, from concept to ship, is a very tight schedule, so the idea itself needs to come to form and solidify *very* quickly. I think Notch had his "Harvest Moon" idea within the first hour or two, like right after he had a blank window up and running in his code.

2) It might have been easier to do a 2D game, even using Unity3D, simply because it's a lot faster to draw low-res sprites than it is to do even the simplest 3D modeling. At least, with my current level of skill with MAX, which may very well improve with more use over the next few months.

3) As they always say, it is best to start the competition fully prepared. Usually this is meant in terms of tools, but I found myself adapting my work tactics as I went along, taking some really long breaks to sleep, nap, walk the dog, etc, and had to make a run to the store at one point to get some energy drinks and snacks. I could have arranged beforehand to have all of these things taken care of for the compo and minimized my time away from the keyboard.

4) Did not pick up on the music thing until maybe halfway through. My collection is a little thinned out right now, as I'm switching off of DRM music and am in the process of deleting a lot of what I had before - the proverbial pulling of the needle out of the arm. I made up for this lack of music on my computer with some internet radio. That really helped, and is something I'll continue to use in my daily work, but only came into play maybe halfway through.


So, to sum up, this was a really great learning experience, even though I didn't even get close to where I wanted to have been by the end. Having to work within a 48 hour window forced me to figure out ways of working quicker, much of which is applicable outside the competition. Obviously, this will all come in handy for the next Ludum Dare, which I definitely plan on doing when it comes around in April.

And also, there's like 600+ games submitted, which I intend to play as much of as I can, even though I'm not able to rate any of them because I didn't submit a game of my own. I'll probably follow up with another post once I've gotten through those with my thoughts on the other entries, some of which, just from the titles/screenshots look very interesting indeed.

Friday, December 16, 2011

LD22: live blog

Fri - 11:27 - scrapping the island thing. realized that it relies a bit on "Standard Assets" from Unity, which I'm pretty sure would be breaking the rules of the compo. starting over with a clean slate and no standard assets.

Sat - 12:42am - i've got a lonely dude on a platform. maybe some kind of crapsaccharine purgatory that you have to escape from somehow?

Sat - 12:46am - added shadows. doesn't look right without shadows. and why not, since the web player supports nice, dynamic real-time shadows.

Sat - 1:30am - very crude platformer controls going. they need work. still thinking about what to actually have done in this world. i kind of like the general look of it so far - the isometric crude-3D-ishness of it, anyway. maybe some kind of introspective action puzzler...

Sat - 2:06am - made the jumping less shitty. added a respawn mechanic. it has a little bit of an indie platformerness to it now.

Sat - 2:54am - i have this monolith-looking exit thing going.. you just can't quite go /through/ it yet.. i do kind of like the look of it, though. reminds me somewhat of voxatron. starting to think more along the lines of "escape from purgatory within XX time", maybe add in things that would be especially tortuous and taunting and meaningless to someone with absolutely no social life.

Sat - 3:14am - ok, well you can go through it - that part is easy enough. it's just um.. supposed to go somewhere.. i.e. "exit" to some other dimension..

Sat - 11:09am - slept. up. ate. back to it..

Sat - 1:42pm - fixed up the movement so that it follows an 8 direction D-pad style with the isometric view. and the camera follows you, even as you fall down, and fall back to where you started. tried adding auto-step-up for the platforms to maybe be able to get rid of the jumping. that didn't work out so well. i need to get the exit portal working somehow so i can get to making some proper levels.

Sat - 3:39pm - added a way of teleporting from one part of the world to the other. i decided not to do it as separate levels because Unity resets the input axes whenever it loads a new level, which leads to a bit of a cognitive break since you have to re-press the movement button you were holding down when you walked through the door in order to keep moving.

so now it's got this ability to be a sort of exploratory world. i'm thinking of keeping to the theme of "alone" by simply keeping it devoid of other life forms; that you're supposed to find your way out. like a maze, i guess. although mazes can be pretty cliched, so i'm going to keep thinking about how i want to approach that.

Sat - 3:47pm - time for some sound effects..

Sat - 8:03pm - took a nap after adding some bits of another room/level, then had dinner and walked the dog. back at my desk with a full cup of coffee.

Sat - 9:20pm - working on a walk cycle in Unity's animation editor

Sat - 10:34pm - i added some shoulders and hips to the model to support movement animations, and made a simple walk cycle consisting of just the legs moving back and forth. now i just have to write the code to play it at the right times..

Sun - 1:13am - had a bit of a snafu with unity and lost a bunch of work and had to redo it. fixed that and got the walk cycle code in (easier than i thought it would be). also put some tunes on, which seems to be helping quite a bit.

Sun - 1:29am - looks like the basics are pretty much there. now comes the real work!

Sun - 11:12am - that was a nice little nap. fooded up. tunes going. day 2!

Sun - 11:40am -

Sun - 11:57am -

Sun - 12:37pm -

Sun - 12:54pm -

Sun - 1:21pm -

Sun - 1:37pm -
some more fiddling about with the key/lock mechanic. should probably get to a jump mechanic. starting to think the way i'm doing respawns could be exploitable in not-so-good ways, so i might change it.

Sun - 2:19pm -
trying to get back onto the theme of "Alone"..

Sun - 3:13pm -
screw it - i'm making an enemy.

Sun - 3:32pm -
meh - i cant be bothered to attempt the AI for this right now. going to find some other form of conflict/obstacle to overcome for this next part.

Sun - 5:39pm -
ok working on something totally different that definitely has a lot more to do with the theme. hopefully will be able to get it working in time..

Sun - 5:39pm -
this is some rather silly code that i'm writing..

Sun - 8:03pm -
this is like the core element of this thing.. less than 1 hour to go!

Sun - 9:14pm - meh. didn't finish in time. oh well. back to that other game i was working on! will definitely try this again in april!

it is on like the donkey kong

LD22 theme is "Alone"

Trying something to do with an island, or islands, or something. For now, anyway. Don't really have a specific gameplay in mind yet aside from just wandering around this deserted archipelago. Might still think of something completely different and go with that, or think of something that does go with this. For now, I'm messing around with islands.

WebPlayer is over in Test Arcade. I'll be updating it with builds.

LD22: I'm in!

This weekend, I'll be taking a break from the super-duper-top-secret project I have been working on to give this Ludum Dare thing a whirl. For no other reason than to possibly come up with something new and different and cool, which as good enough a reason to me as any. Hopefully there is no rule against declaring oneself "in" just 15 minutes before the official start of the compo.. :) Even so, it'll be fun to give this "make a game in 48 hours" thing a try and see what happens.

Tools I will most likely be using to at least some extent, because I use them for my other stuff:
* Unity3D
* GIMP
* 3DSMax
* Audacity
* Bfxr
* Perl
* MonoDevelop
* Unityscript (JS, maybe a little bit of C#)

The game will be about..whatever the theme voting says it will be about, which I'll find out shortly and probably post a bit about in a bit.

Thanks for stopping by, and to everyone in the competition, good luck!