It was a bit of a slow week for game development for me with having to get some papers polished up for my physics day job, but this weekend Jeff and I have been working on the space game (now tentatively titled ‘One With Everything’). Mostly the focus has been, how do we do ‘stage transitions’ between scales that are smooth?

The game is supposed to cover about 15 orders of magnitude in scale when all is said and done. Thats enough that floating point problems could raise their ugly head. We could just cut things off every 3-4 orders of magnitude and make a new stage, but that feels artificial and abrupt. So instead the idea is to ‘curate’ position and scale every so often, re-centering the game on the player and rescaling everything to keep it in a numerically stable zone. That should take care of things up until about the planetary scale.

The problem at the planetary scale is, we want to have the player start zoomed in among a debris field and then eventually get big enough that they can start noticing their ‘orbit’. Once the player is big enough, they can either reach escape velocity (in which case the game zooms out, everything vanishes, and then it zooms in placing them in orbit around a different randomly generated object appropriate to their size) or absorb the thing they’re orbitting around, in which case they start to orbit around a new object one ‘tier’ higher (absorb a moon, you’re now orbiting a planet; absorb a planet, you’re now orbiting the sun, etc).

That means spawning an object that might be 100-10000 times bigger than the player in order to have it there (so if you go inwards in the orbit far enough you encounter it and get gobbled up). For example, in the current demo when the player is 10 meters in size, we place a planetoid 3km away that is itself maybe 1km in radius. However there’s a noticeable amount of glitching when you’re close to the planetoid – objects tend to graphically jump around on the sub-meter scale during their orbits, like they’re suffering noticeable round-off errors. The actual velocities involved aren’t that large and the orbits appear stable, so I don’t think its the numerical integrator, and it looks like the objects actually do change position when they ‘jump’, so its not just lag bursts from generating new chunks. At this point I’m not really sure what it is.

The game is playable with it though, so I’m going to give it a rest and move on to another element of the game – the progression system. The way One With Everything is set up is that you have a certain amount of time to absorb things and grow before everything disintegrates around you. This time is going to be fairly easy to maintain at the early levels, but it will get very rough at later levels. However, as you do crazy things like bounce off of objects at half the speed of light, do tight gravity assists around heavy objects, etc, you unlock achievements. These aren’t just for show – they’re the ‘currency’ for the game’s upgrade shop. Every (couple) achievements, you can buy an upgrade to your speed, maneuverability, ability to break objects, etc. You can then choose to leave these upgrades on and get their benefits, or turn them off to get a bonus to your score multiplier.

The idea is that as you play the game, yes you have to repeat the early stages, but at the same time there will still be new things you can earn during those early stages so you aren’t just retreading old ground. Hopefully that will make for a fresh and interesting take on this kind of repeated-play/progression game.

 

shaderpicI was messing around with shaders for the ‘space game’, trying to figure out how to do a nice background shader for nebulae and the like. My attempts at a hydrodynamics shader weren’t working, so I just started messing around. The result is this (uses WebGL).

Each pixel of the shader simulates the equations of motion of a tumbling object. When you have an object whose moments of inertia along its three principle axes aren’t balanced, then it does all sorts of crazy spinning and tumbling. This is something you’ve seen if you’ve played realistic flight simulators or Kerbal Space Program – if you’ve got something and it starts to spin, it doesn’t just spin around one axis, it wanders all over the place (or think of how a frisbee wobbles in flight). I then put a blur on top of the whole thing and used the results to make a bump map.

I don’t think this will end up in game, its too dizzying and doesn’t look ‘like anything’, but its neat how you can get spiral waves, ‘up’ and ‘down’ regions (the green/yellow ones are spinning around one pole of the object and the red/blue ones are just the flipped version of that), etc, all from the tumbling of an irregular object.

Since I had a bit of a hard time figuring out how to do all this, I’ve decided to make a short tutorial about it.

(more…)

almost_everything

An abridged map of scales. My hand got tired so I skipped all that squishy stuff in the middle called ‘life’.

I’ve been fascinated with the idea of ‘scale games’ of late. I blame ‘Cookie Clicker’, which I will not link to here in order to save you from its addictive properties. The basic idea is, its cool to compress lots of orders of magnitude of something into a single game, be it going from one cookie per click to time portals churning out millions per second, building a space-ship in Kerbal Space Program that finds the first 50km as hard as the next 50 million, or starting by rolling up paperclips in Katamari Damacy and finally rolling up continents and planets.

There’s kind of a magic to taking something huge – so huge that we don’t think of its size in terms of one number, but in terms of all of the smaller worlds it contains –  and fitting it into an experience that we can understand in a single sitting.

Anyhow, this is all going somewhere, and that is that this weekend I’ll be working on something we’ve been calling ‘the space game’ with Jeff Berry. Despite its rather nondescript codename, it’s all about the scales of the universe. This will be my first experience working with a professional artist (as well as my first foray into WebGL) so I look forward to seeing what we can create.

Incidentally, I’m pleased to announce that Cascade was picked as the winner of last week’s Fight Magic Run!

cascade_shot4After a sleepness night, Keanen Wendler-Shaw and I have finished our FightMagicRun entry for the brutal ’2-player’ topic. We went right at it and implemented a multiplayer game, server, lobby, the works in a 48 hour competition. I will probably be horrified when I read this post later, since I’m writing it on so little sleep. In fact, looking at the screenshot I think it was creeping into my constant slew of test user names.

Cascade is a simple little strategy board-game. You can place tiles that convert ‘downstream’ tiles to your type. The scoring is done not based on your tiles at the end of the game, but on having as many tiles active at one time as you can. This plays in with the conversion mechanics of the game to make the last move less important than it otherwise would be.

Anyhow, I’m off to bed, but you might give it a try. It does require 2 players however, so bring a friend. Here is the link.

 

I really do hope the server doesn’t crash within the next 8 hours…

There were a lot of bugs that were stopping the completion of some dungeons and quests, so I’ve made a hotfix that should hopefully address them. As before, the content pack is the first thing updated and can be downloaded here for people that own the game. The installers will be slowly updated over the next few hours, and then finally the versions on the store.

I’ll be doing FiMaRu this weekend so this is probably the last set of bugfixes until Monday unless there’s some game-doesn’t-run bug.

v1.02 Changelog:

(more…)

A new version of Travelogue is out. Go to the download page and grab the content pack update! The others will be updated slowly as the night goes on (slow upload speeds on my end) but the content update is currently fresh. This update includes a new dungeon, Roc’s Nest, which is north of Fericant in the mountains.

Changelog:

(more…)

Roc’s Nest

Well, I’ve fixed all the reported bugs that I could reproduce (if you get the ‘game crashes outside of a city’ bug please let me know the details), so its time to turn my attention to Roc’s Nest. Right now I’ve got about seven event cards associated with this dungeon, but they’re pretty sequential. I could leave it as more of an extended, sequential quest line, or I could pad it out and turn it into something closer to the other dungeons, or I could merge them into one mega-card that you choose your way through. Obviously padding it out will take the most time of these options and may delay it until a later patch (since I want to get the bugfixes out there asap).

So, what do you think? Would you guys prefer a linear questline, or another dungeon in the current style ‘explore Lv1 and encounter random events, then find the way to Lv2, explore Lv2, find the way to Lv3, …’?

Thanks to the demo and people playing the full game, we’re starting to accumulate a list of things to fix for a post-release patch that will be coming out later this week. One thing in particular that seems to be occurring for some people intermittently is that the merchant in particular glitches out when traveling to certain places (so far its been reported for Seawatch, Sparrow Point, and Witchwood Grove). So far I haven’t been able to replicate this bug, so if its happening to you please shoot me an email. Include the time of year inside the game, since this makes a difference for some events.

Please continue to let me know about bugs as you find them. I’m aiming to release the patch some time Thursday night.

In the mean time, I’ve put up a page that shows you the various region statistics in realtime. These are the result of what everyone is doing in those areas, and its pretty neat to look at now that we have some people playing it.

Travelogue Region Grapher

I’m also thinking of making some sort of route-planner page as well that lets you estimate the value of different trade routes.

Here’s the current changelog (both existing and intended) for the v1.01 patch:

(more…)