New Gameplay Video! Taking some of the inspiration from Gamecamp,
I’ve captured a new gameplay video! A lot of the fine control
adjustments really don’t translate to a video presentation, but some of
the points to look for include: compass arrows for off-screen enemies,
enemies that shoot back / different enemy types and alternate worlds:
Two points with this video: the first, the compass arrows are an
interesting experiment. I’m not sure if I like them or not, but from a
gameplay perspective they make a huge difference (and are more
successful than alternate solutions including rendering enemies through
the geometry (which only works in a select few cases) and an overlaid
radar which doesn’t map well to the 3d space). The second point: for the
alt worlds, the idea is that when in the red world, the white world
enemies are shadows (and otherwise unable to see or touch you). While
you can see the red enemies in the white would, you can’t hurt them and
they can’t see you – but if you go to the red world, they now become
quite violent and aggressive. Note that the red enemies are converting
the white coins to red (which slow you down in the normal world but
become collectable in the red world) – the radius by which they affect
them is currently too small, but I will change how all that works as
soon as I get back into the code.
I tried having a pickup trigger alt world switch ability (as well as
specific portals in the world), but ultimately the push-button switch
seems to be the best. Provided the user is prevented from getting into
the alt world before the red enemies and coins, the switch allows for an
easy option to escape as well to strategically attack / avoid larger
enemies. Watching my Fiancé’ play last night, she made huge use of this
feature without any prompting – I’m not quite sure where it will end up,
but that first initial test is encouraging.
I’m going to continue to refine this, but I’m also going to start
looking at what sort of changes multiplayer will require. I’ve kept half
a brain to the netcode requirements (and I am familiar with Unreal’s
networking system) but I also haven’t done any multiplayer development
in about 5 years… which should make this interesting. Fingers crossed
though!
I’ve now had a chance to start putting these fundamental pieces together
and it’s time to show them off in another video! (music the Hanging
Gardens track curtsey of dj://spaz)
I hope you can see where this is progressing, if only compared to the
first few samples. Here we see the new map (“light” world only though I
do have a few other colors ready to go), simple enemies spawned in waves
and a basic weapon. (The controls and camera are also a little more
friendly). Before I start musing about some of my gameplay concepts and
critique on this first version, here are the “rules” as they exist now:
- Your power (both health and ammo) is represented by the white ring
around your disc. This also defines your influence on coins, and the
point at which you repel enemies. You gain this power back by collecting
coins.
- The weapon does damage based on the current lighting you are in – if
you noticed, the beam intensity and color changes to reflect this. When
in the direct sunlight you do massive damage, and when on the underside,
you are comparatively weak.
- Boosting into an enemy does damage as well – boost results in a loss
of control though, and can break you free from some parts of the map.
- Enemies also collect coins (except for the enemy type that “corrupts”
them) – when an enemy is destroyed, it spawns coins based on how many it
had collected. (note that corrupt coins don’t do anything yet).
Some parts of this are proving really fun – the abstract surface
navigation is a huge hit for my testers, as is the surface hugging laser
beam, the fluid interaction with the coins and the general aesthetic
(note simple textures and normal maps while keeping the surface clean
and lighting friendly). I still want to add a lot of ambient flem
(particles, crazy background, etc) but I think this is narrowing in on a
general aesthetic that is easy and fun to produce yet visually
stimulating and interesting. (even though it relies on high res
lightmaps, the size of these maps is fairly small as well – I know it
wouldn’t run as-is on the iPhone, but I want to avoid needing a super
high powered computer to run what is really a glorified arcade game)
Other parts are a bit questionable though – the “lighting = weapon
power” feature is mostly ignored by the testers, though my Fiancé
learned (without prompting!) to lure the enemies to the top side where
they were more vulnerable. Still, this needs to be more clear and I’m
wondering if that’s simply a visual cue or something more drastic – I
have a wonderful way to sample lighting at a given point, but making
this lighting relevant to gameplay is harder than I thought!
The influence ring is a big hit, but using it as a health meter breaks
down… it seems backwards almost, in that you have an easy time
collecting coins (and thus health) when you don’t need them but have
difficulty when you do. You also repel enemies when you are your
strongest, they are all but attracted to you just when you have the most
to lose. I need to explore this more and find a way that is clear yet
perhaps a little more reasonable from a gameplay perspective.
I also want to work in the means by which you can switch to the
alternate worlds (colors) – aesthetically I love them but I’m still not
sure how to activate them. I did some test with “portal” meshes, but
that was just confusing to the testers.
Besides these gameplay questions, I also have a lot of ideas where to
keep adding development. Concepts for enemies, powerups, weapons, and
affectors are practically writing themselves (affectors being things
like bumpers or force fields that spawn in the world and shake things
up). The way the one enemy type can corrupt coins has also been a big
hit – now to figure out which of the dozen or so directions I should go
to making those corrupt coins matter from a gameplay perspective.
I could add these little parts all day, but I think the next step is to
try and resolve some of the fundamental gameplay questions. I’m going to
try and nail some of that this weekend, as well as hookup a gamepad as a
controller (the lack of strafe was bothering a few people) and perhaps
another weapon, enemy or two. I want to be a little careful as it’s easy
to get distracted at this point and I’d rather have as strong a
beginning as possible without having to rewrite large sections down the
road. After this next stage I also want to look into adding multiplayer
support – though despite almost 10 years working with one form of Unreal
or another, netcode still scares me. Should be an interesting experience
though – half of this project is to try and stretch my skills a little…
(and if I didn’t start thinking multiplayer, I fear my testers would
probably lynch me, so it’s not like I have much choice!)
In a flurry of inspiration and code this project (which I holds the
uninspired working title “disc game”) came to life this weekend. There
is still a long way to go, and admittedly the parts are still rough
around the edges, but I my instincts say there is a seed of something
really interesting here.
So without any more preamble, here is the first video:
Now that you’ve had a chance to watch the video, let me break down a
little of what is going on there. The basic idea is that the player is
controlling a dist that is hovering a short distance above a surface.
You could think of this like a magnet over a superconductor or an air
hockey puck. The controls give a small force to the puck (forwards /
backwards / turn) and while there are some limits to prevent extreme
cases, you essentially coast without friction. The puck also has
extremely high restitution, meaning it will have a fairly pronounced
kickback against collisions (not unlike an air hockey puck). For all
intents and purposes, gravity for this world follows the normal of the
playable surface.
The interesting part in all this is that the surface can be any abstract
shape (though things like sharp corners would understandably cause
problems). This “surface hugging” approach makes what is really a very
simple 2d control schema into something rather wild. The system I have
here works on a sphere, inside of a tube, all over any sort of wildly
twisted geometry… I’m even interested in making a mobius loop at some
point!
I don’t want to get to much into the code of how this works – suffice to
say it’s a rather odd interpretation of Unreal’s PhysX. Despite quite a
few more quaternions than I’d ever like to see again, this
implementation is entirely in UScript (which is a real testament to the
capability of UDK). I’ll also point out that the system works for not
just the player’s disc, but potentially dozens (if not hundreds) of
discs active at once. (with only a few minor optimizations, I maintain a
solid 60 fps with over 1000 live discs floating about the world).
This brings me to the second half of the video – now that I have a discs
on a surface, where is the “game”? My first test involved randomly
spawning 100 “coins” onto the surface – which can be physically
influenced by the player (or potentially each other, enemies, etc). I
see a whole library of possible surface-bound objects that range from
small health-style pickups (like the coins in the video) to enemies,
pickups, projectiles, weapons, etc. I also see this game as a potential
multiplayer experience – so while it could be “hungry hungry hippos on
acid” I see I’m seeing something a little more aggressive – with plenty
of explosions and particles to go around. (Mario Kart battle on
non-rational geometry?)
I also want to incorporate pureLIGHT into the gameplay. As part of this,
I have a small object that (through a little development black magic
curtsey of my co-worker Jason) reads the current color of the world
under the player’s disc. This has performance limitations (I couldn’t
sample hundreds of points at the same time) but it does allow me to
(with more development black magic) read the pureLIGHT result for the
world at the given location… meaning I could have the color or intensity
of the light affect the player. One of the original inspirations in all
this was a “physics game where light of the color blue was slippery”.
I’m not quite sure how to integrate all this yet (the first test where
you’re speed / power was based on lighting was confusing to my testers)
but an idea is that the light you are in will affect your influence –
shown in the video as a white ring around the pawn. I have to do some
testing on this still – I’m interested to see where this will go.
(I also have ideas for switching the lighting state for the scene –
going from this white light to something high contrast black and red,
etc. I love the aesthetic possibilities in this, but I don’t know how
this will relate to the gameplay yet – I have to do some more thinking
on the subject)
As for the world, this first test has a few notable parts – I really
like the distortion when you go around the fold in the world or get
close to the sloped ground at the “red” end of the track. I also really
like the bounce, but if anything, I find the environment a little
constraining – I’m not sure if this is an arena type battle game or a
linear puzzle game like Marble Madness. The more I think of it though, I
wonder if it’s both – the movement mechanics would make for a very
interesting linear game… but a spatially distorted combat game like
Geometry Wars could also work. For ease of testing I think I’ll start
with more of an arena focus, but I definitely think there is a single
player puzzle / navigation aspect to this as well (all based on the same
gameplay mechanics). In the short term though, I do think the current
world breaks down. While it has some really interesting pieces, I’m not
sold on the scale or layout. I have a few thoughts floating around for a
more appropriate world test (I may revisit this first one in the future)
– I’ll post some screenshots as that one comes together.