[WIP] Up the Rabbit Hole (3rd person adventure/platform game with a little artificial life)

Usagi no Charade, a.k.a Up the Rabbit Hole, is my pilot project for developing with Unity.

This is a third person adventure/platform game that started 3-4 months ago as a series of experiments recorded in my unity tech blog and my youtube.

I am designing this platform game as a microcosm involving live organisms and smart(er) AIs

About me: previously I released several games on the iPhone/iPad; before doing this I worked with a couple of companies as a scripting platform architect and game framework builder. So, I’m a game system builder who learned (the hard way) the difference between building systems and building games.

Today my focus was on tweaking the day-night cycle and experimenting with solutions to break down my level file as I want bigger ground meshes and the importer easily chokes on these (big level file with lots of big meshes = slow ).

Living organisms… ? I’m chewing on this whenever I find time:

You can try the w.i.p on Wooglie, in their dev section.

I’m responsible for the overall game concept / design; I write the code; I do level design and a lot of modelling. However several artists kindly help with this project, notably with concept art, animation and organic modelling.

Note: one motivation to track this here is that I hope to find people that want to do similar stuff (so, focusing on real-time / 3rd person 3D ) as I’m thinking of releasing the underlying APIs / framework and need sponsors. So, you can PM if you are interested or if you have work to offer in similar area.

I will update… maybe every 2/3 days, at least weekly I think.

I’ve been setting up a workflow to generate nicer details on the terrain. I write ā€˜generate’ because it doesn’t involve much modelling ( this part is done in Blender, not Unity) .

Here you can see a very rough Cycles bake (left platform) which doesn’t do justice to what this can achieve… Baking with Blender Cycles is really good news for people using Unity Free. I have a mini project that’s more suitable for this so… later.


See my previous post for link to (updated) live build.

The reason big meshes and long import times won’t do for me is that this would literally kill my level file. I probably need to write an automation. Would be curious to hear of anybody who tackled this before.

Would the character be able to run ? About level design you could use reusable platforms and premade roads segments this could help you speed up the level making.
Good work.

Modular design would speed things up, and quite possibly avoid the so called ā€˜large meshes’ issue. I wanted to give myself a chance to do more focused, more detailed work by focusing on a small space though…

Run? Same idea here: trying to make more things happen in a smaller space (to the point, of course, where running would be dangerous/undesirable).
Maybe I got this wrong? As I see games where the character can run but actually their running speed is 120% of a normal walking speed, and the walking speed is 50% of that. I wonder whether this is about pacing the game without the ā€œAw she’s moving so slow, she can’t even runā€ psychological gotcha.

Developing the procedural approach to refining the terrain.

BEFORE

AFTER

Note that these are Cycles renders.

Let’s go back into Unity with a new video showing a different part of the map, and a different time of the day (if video is too dark on your display come back a bit later, recalibrating… )

The changes involved a trivial modifier stack, geometry is 3 times heavier, frame rate not a concern (frame rate you see in video is irrelevant).
The scene now takes 5 minutes to import into Unity; I wrote a script to chunk the level file but 5 minutes isn’t atrocious, so I may bear with it for now.

No update to live build today.

You’ve got some neat stuff going on here. I always enjoy games with these kinds of AIs.

Looks great. My only suggestion is a name change. Up the Rabbit hole sounds like something you are probably not going for. Maybe just change it to ā€œDown the Rabbit holeā€. You game though. Again, it looks great.

I wouldn’t be so sure. I mean, I know exactly what it sounds like.
Even so it’s a working title and like many things it is subject to change.

I had the idea of an ill-tempered, fussy main character, this is evolving into an interpretation of the queen in Alice. So, aside from a bad pun the idea of looking at Wonderland from the other end of the scope helps putting design elements in perspective.

If it acts as a deterrent - say for instance discouraging people from checking this thread… then it’s a bad working title.

And thanks for the encouragement!

1 Like

This update is much overdue.

You can play the latest build [here]

Ground constraints

I finished cleaning up after improving the terrain (the new terrain is uneven in many places, which arguably looks better, but needs more work).
One interesting workflow optimisation was introducing ground constraints. There’s a key shortcut to place objects on the ground but custom constraints are useful if we update the ground after placing objects on it.

Improved navigation when transitioning between indoors and outdoors

These transitions are tricky because the control scheme is not the same in 1st person (indoors) and 3rd person (outdoors).

When transitioning to indoors, first person controls are ā€œeased inā€ using a gain parameter. A typical annoyance that this alleviates is when entering a building while holding the right arrow key, the view would start rotating to the right.

When transitioning to outdoors, I use a ā€œwait for releaseā€ approach that’s trickier to get right. The idea is that, we lock on previous input until the navigation input pattern (which keys are pressed or not) changes. But we don’t want to read keys directly because this won’t be compatible with keyboard-less platform. So it has to be done via Input.
In pseudocode:

Lock walking direction
Yield until input magnitude decreases
Yield until input magnitude increases
Unlock walking direction

Other stuff

I’ve been working on Blender scripts to use blend files as asset libraries and correct other export annoyances but I hit a quirk that’ll force me to do things in a roundabout way. (<= please click on this if you’re familiar with blender scripting and think you may be able to help)

Finally, I’ve been playing with visibility polling to avoid unexpected behaviour (e.g. PC attacking an off-screen NPC). Won’t be much use in my case because visibility culling isn’t precise enough (I understand that this is meant to help optimising, so I was probably abusing the APIs in this case).

Nice, the character could really need something to ā€œgroundā€ the character, like a simple blob shadow or similar, seems like she is floating around and hard to tell exactly where she are on the terrain, the low camera angle does not help either. Keep it up, looks interesting so far : )

Thank you.

When the sun angle is low, intensity drops and shadows disappear. This is by design: long shadows on the ground would end up looking pretty bad.

However, having a bit of a shadow under the character is important (visually, but also functionally to define its relation to the ground) So I’m thinking of activating shadow-casting from a vertical source and using a little trickery to mask the transition. Still… a blob shadow may work better.

Talking about shadows, here’s a little teaser of the next update:

For this update I worked on improving interiors (live build here):

In short, house models are kept in separate files; used a couple of tricks if we can even call it that.

These models aren’t final but already much better (I hope) than the dummies we had before. As usual refining geometry causes small landslides (meaning: design changes).

I am cutting corners as much as possible to quickly move to the next significant improvement. For example, I initially thought that I needed many variations around the original house design but this may not impact quality as much as, say, furbishing said houses. So I make do with only 3 variations.

ā€œAdaptive refinementā€ is really the way that this project is done so, it would be hard to say whether anything you see here is final. I hope not. Is it wasted work, then? I don’t think so, in the sense that each iteration (visually as much as technically) provides input for the next… Would be happy to have opinions on this.

Gameplay and usability are lagging behind so we have a topic for the next update.

The game looks more like a Mario 64 game that we would want to play like Mario 64 instead of a slow adventure like game.

  • Will you implement basic textures ? it looks too much bad actually with simple colors and your lightening is too strong.
    By basic you can do like ā€œJourneyā€ game and some other choosing simple textures easy to make.
    http://canadianonlinegamers.com/wp-content/uploads/2012/04/Journey-pic-5.jpeg
  • The walking animation is somewhat not enought natural and smooth , it is final animations or prototyping ?
  • Red characters should be more alive, their animations are too simplistic
  • Some particle effects when the character hits the red mobs will do better job
    The game looks lot more like some platfomer with ennemies all around, looking at the level i would expect to be able to run, jump , smash ennemies, instead of adventuring.
    By adventure i would expect bigger structures, lot more objects and mechanisms to look at and use, and ennemies you must put out using mechanisms and tricks instead.
    Perhaps making the game more action game and keeping the adventure part for puzzles and mechanims would be better ?
    I suggest you to post a first demo to gather players reactions and decide what direction to keep or change than.

Anyway that’s a big amount of job you already made, a really good job, but i find the game would need really a minimum texturing style and choose better lightening and shadows also.

Keep the good work.

1 Like

I really hope we’re moving away from the ā€œMario 64ā€ visual feel. It brings somewhat incorrect expectations about how the game should play.

Visually there’s a lot of work to do. Mainly adding elements, detailing and, like you mention, texturing but not something very complex as I like to keep a cartoony style. Tuning light and color is a little tricky because I want to keep the day/night cycle which involves calibrating many parameters over and over (thinking of trashing this but I can’t get myself to give up).
And we’re trying to make this work with the free editor.

About the game mechanics, it works more like a platform game but without much of a commitment to the genre.
Early we could see the possibility of adding ā€˜point and click’ puzzles, especially indoors. However I’m not interested in implementing this in the game - instead I really want to develop gameplay around the AIs that I’m implementing - if you tried the live build you might have noticed that the NPCs basically do whatever they do, but without much impact on the gaming experience. I don’t really know how to bring this into our game, but others have than it well (e.g. Waking Mars) so let’s try to create something fresh.

I was trying to improve lighting and visual feel this morning, I found the result interesting:

https://www.youtube.com/watch?v=RdCsrqCZD2U

Thank you for all your comments!

The new lightening makes the level looking lot more good now.
Bu the animations are bad, i mean the heroine anim is like a statue walking, and the speed walking is faster than anim speed. Also the ennemy has no real cartoon animation.
Keep improving :slight_smile:

Today I’ll be talking a little about how I cope with workflow issues.
A problem I’ve been trying to mitigate for a while is how the large size of the main level file is kinda slowing things down because of re-importing over and over as we make changes.

This post is a bit low level but I hope to get some feedback about how other people are doing this.

Here you can see that I’m building a pond on the right. Doing this in the main level file would be a pain as I like to play-test as I go. Anyway, the original situation was:

  • Platform in main level file
  • House in a separate file

I resaved the main file, moved everything but the platform I want to modify to hidden layers (using the little script I posted) and linked the house as a group (tutorial), and this is how the work file looks like:


Interestingly, groups are picked up by the FBX exporter. However since the export script gives control over which layers are being exported, this is not a problem (I don’t want to re-import the house every time as I make no changes to that).

As this is a pilot project I’m trying solutions on a case basis. I wouldn’t do this for every platform/area in the game. With a little more scripting it should be possible to eliminate these issues.

This was literally a 10 minutes modelling and animation challenge. Didn’t come out too badly imho but more to the point I got a batch of modelled creatures and nobody handy to rig them so it stays in the queue…

Why not simply exporting objects individually ? You import only modified objects this way ?
Why not breaking the platform in many separate parts ? like breaking it in lower parts, higher ones, norths , south , east parts etc … or simply make modular reusable platforms that is less work and as good results.

Breaking your scene in several parts means you could use LOD and culling for distant parts also.

Of course the scene is broken into several parts (~80 objects). So the problem isn’t there although, we’re not doing this to please the importer, as this would be as pleasant and productive as chunking files to fit them into floppy disks.

I get the idea of selecting and exporting objects one at a time (or a few at a time) and I can see how artists with no scripting skills would resort to this as a means to push slow updates into Unity files. There are two reasons I don’t want to do this manually.

  • It is slow, and tedious. You need to select the objects you want to update. You need to browse to the folder containing your assets. Then you have to give a meaningful name to the object you’re exporting. Of course doing this once has never been a problem. But, asking why I’m not doing it this way is like asking why every application has a ā€œsaveā€ option next to ā€œsave asā€. And the answer is simple: because nobody even want to press the save button. Even if it doesn’t take much time, it is distracting.
  • The relationship between the *.blend file and the *.unity file is in the artist’s head and nowhere else. I can easily see how this would lead to lost assets, fbx files without blender counterparts. And more generally, a bloody mess.

So I’m happier with setting up a separate file in the way I described, as it allows me to get in a smooth test-modify-retest loop. I find it patchy but not unworkable.

You already suggested using reusable/modular stuff and… I have already replied :stuck_out_tongue:
I’m going modular when it works for me, and finding patience when it doesn’t.

ok.
Your video seems laggy, it is the game ?
About red monster animation, pm me is you need some help.