Categories
VR Design Research Labs

Tower Dungeon

For this project I wanted to create a VR game as I am more interested in video games than virtual experiences. I am highly fond of the fantasy genre, in particular medieval fantasy, and so I made that the theme of my project. A historical fantasy version of medieval Europe. I then needed to think about what type of game I wanted to make and roguelike kind of just kept coming back to me. I have played many roguelike games and I enjoy them very much, so I just went with it. I haven’t played any VR roguelike games but I have played Hades, The Binding of Isaac, even Pixel Dungeon on mobile, and many others so I already had a pretty good idea of some things I wanted to include.

To justify making this game and why it would benefit from being in VR compared to on a computer is spatial awareness. Roguelikes are usually played from a third-person or top-down view, meaning you can see things the character you’re playing shouldn’t be able to and react differently because of that. A roguelike in VR would restrict your spatial awareness incredibly in comparison as you can only see from the first-person perspective. You would have no idea if anything were behind you or around the corner unless you turn around or hear a noise. It adds that extra fear and suspense.

I was planning to make my own assets and characters at the start of the project, however I quickly got busy with other work and put this project on the backfoot, thereby running out of time to make any and have enough time left to make the game. I did come across the UMA Character Unity asset pack and tested it out a little, but I quickly forgot about it amongst all the other things I needed to do and I ended up just using a bunch of pre-made assets from the Unity Asset Store and Mixamo.

For weapons I used the following:

  • LOWPOLY – Weapon Pack Demo by IV team (Unity Asset Store)
  • Low Poly Weapons by SICS Games (Unity Asset Store)

For characters I used the following:

  • Dragon for Boss Monster : PBR by Dungeon Mason (Unity Asset Store)
  • erika_archer_bow_arrow (Mixamo Character)
  • Nightshade J Friedrich (Mixamo Character)
  • skeletonzombie_t_avelange (Mixamo Character)
  • Vampire A Lusth (Mixamo Character)
  • Paladin WProp J Nordstrom (Mixamo Character)

For the environment I used Ultimate Low Poly Dungeon by Broken Vector (Unity Asset Store).

With these assets I came up with a list of rooms I could construct and fill with items and then drew a floor plan. It’s a rough floor plan but it let me start the project.

That rough floor plan was good enough to get by but my indecisiveness meant I actually needed to flesh out the plan before building any more of the project. This next floor plan is the most accurate version that I used to make the layout.

And below is what it looks like top down in Unity. Looking through the ceilings of course.

The original concept for this game was to make a tower for the player to conquer but I took too long with making the mechanics that I ended up with only one level. The name was meant to be “Tower Dungeon”, it is now called “Castle Dungeon”. The setting changed from “Tower Dungeon is a roguelike dungeon crawler set in a historical fantasy version of medieval Europe. The player takes on the role of the Undesirable One trying to make their way to the top floor of Fortitude Tower – a tower safeguarding the power of the gods, said to be conquered only by those chosen by the gods.” to “Castle Dungeon is a roguelike dungeon crawler set in a historical fantasy version of medieval Europe. The player’s task is to defeat the occupants of the castle along with the evil Dragon Lord who reigns over them.” As the setting describes, the objective of the game is to clear out the occupants of the castle along with their evil overlord. You can clear room by room or you could go straight to the big guy.

The main mechanics for this game that I wanted were random/procedural generation, enemy AI, and sword mechanics. Each of them are described in their own post. There were also a few other partially developed mechanics that didn’t get finished in time or were being developed before I decided not to use them.

I came across a lot of issues and challenges when creating this game. The main challenges were to do with the enemy AI and sword mechanics, as described in their respective posts. Those took up a lot of my time trying to figure them out and get them working that I ended up not having the time or even forgetting about getting doors to work properly, or triggers to spawn things in rather than everything at once, and even sounds and menus. I also ran out of time to set all of the objects with interactable events, mainly just to pick up and move them around.

Annoyingly there are some pretty serious issues that have remained in the build upon submission. The player moves around just fine when not holding anything but when they pick up a weapon all of a sudden they can only move in the direction roughly 120 degrees counter-clockwise from where they are facing and at a stupidly fast speed. My guess is something in the custom weapon pickup script or configurable joint is affecting the player incorrectly. The sword wrist either works fine and I didn’t test it against an immovable object, or it looks like it’s working the opposite way of how it should and is moving the object it is touching around a pivot rather than itself. The player detection on the enemies has also stopped working in the build but it works in the Unity project file when you play the scene, so I have no clue what is up with that. You can find videos showing these problems here: https://artslondon.padlet.org/whobbs0120191/i1gut10jra6z46ao.

I would like to develop this game more and bring it closer to the original plan that I had but I’m not sure if I will as I might start a new project and use what I have learnt from this one to make that one better. If I do develop this game more, here’s a list of things I would want to improve/add besides the issues mentioned before:

  • Add more levels to make it a tower, not a castle
  • Add more progress attributes (upgrades, lore, difficulties, etc.)
  • Add friendly/neutral NPCs (e.g. shopkeepers)
  • Add/finish more combat mechanics (magic, ranged weaponry, weapon stats, character stats, etc.)
  • Add inventory system for collection of item drops
  • Add item drops
  • Add more room types (e.g. puzzle, trap, etc.)
  • Add random room generation

Categories
Virtual Trajectories

Character Animation – Post Project Review

Planning. I feel I didn’t do enough in the beginning of this unit. I didn’t really have an idea of what exactly I was going to be producing to be graded. This in turn meant I was having to come up with plans and ideas later into the unit when I was supposed to be producing said things.

Design. I think I left the designs a little later than I probably should’ve, despite having them in time for the modelling. I feel I should’ve started them sooner as that would’ve given me time to be more creative with the designs. In the future I will be drawing designs before writing up their character profile because writing a profile puts a certain image in my head that I then find hard to deviate from when designing.

Modelling. I definitely needed to spend more time modelling than I did, especially if I want to have a more detailed model next time. I also need to practice modelling more as I’m alright once I get into the groove, or if I’ve modelled something similar before, but I struggle to know where and how to start something new. This struggle is probably why I don’t realise things such as putting the faces of a cube onto a cylinder instead of rounding out a cube until after I have finished modelling it. I also need to learn to be ok with things not being absolutely perfect to begin with as I think that contributes to the starting struggle. I made one model for a blend shape but I should make more next time as I feel that would incite me to actually try to use blend shapes in the final render.

Rigging. Setting up the skeleton went well. I had no problems with that. Weight painting was annoying as I would finish painting all of the joints and then would find they had repainted where they shouldn’t when moving joints around. This was frustrating as it meant I had to spend so much longer than anticipated trying to fix this. I can see how inverse kinematics are useful and I will definitely use them in the future, they just didn’t work with this particular model.

Animation. Having a plan for the animation before I reach the animation stage would be a good idea. This would allow me to use a mocap studio effectively. Even if I have a model that isn’t humanoid, I could still use the studio to get motions for specific parts of the model instead of forgoing motion capture and keyframing everything. I could also use the studio to film actions and use those as references for keyframing to get more fluid and lifelike animations.

Overview. All in all the finished render isn’t too bad, in my opinion. The main improvements look to be about planning early on and extra time management for more detailed areas.

Categories
Virtual Trajectories

Character Animation – Update #8

I have found the Inverse Kinematic handles to be counterproductive for this specific model as they stop me from moving the tentacles any way other than how the IK handle is set up. This meant I couldn’t move any joints inside the IK handle without completely screwing up the tentacle. So I removed them and have had to key frame each joint individually.

I made a plan for what I wanted to happen in ~15 seconds for the animation.

I was able to animate the entire sequence by keyframing the most important parts first to give me a solid base to then keyframe everything else around them. I didn’t end up adding blend shapes or blinking eyelids, so you do have a wide-eyed squid staring you down. The eyes don’t move separate from the head either in the animation, which Icompletely forgot about until now. Altogether the animation is 460 frames at 24 fps, making it just over 19 seconds long, which ain’t too bad.

Keyframing without the Inverse Kinematic handles wasn’t actually that bad once I got the hang of keyframing. Just getting the first 3 seconds done probably took me longer than the last 16 seconds due to trying to figure out how to get it all to work how I wanted. However, I think I actually did a pretty good job keyframing. I particularly like watching Mr Squid tilt and scratch his head, purely because that is the first part that I thought I did a really good job at animating.

Below is the animation.

Categories
Virtual Trajectories

Character Animation – Update 7

I have finally finished weight painting. It took far longer than expected as every time I finished I would check through all of the joints to make sure they’re all correct, and each of them would have something wrong with them. This happened many times and was very frustrating to have to keep doing.

I originally had the top hat and bow tie binded as skin to the joints so that I wouldn’t have to manually move them during the animation, but that created so many problems with weights on the wrong joints that I eventually unbinded them and have decided to just move them manually.

I think I’m going to keep the current colour scheme as I quite like it after spending all this time looking at it, and the hat and tie colours aren’t too bad to pair with it. They’re a little dark but I can brighten them before I animate them if I want to.

For the animation sequence, I think I am going to have Mr Squid over here float up and down for a bit, land on the ground, mess with his attire, and then signal to the audience. This will take quite a while to keyframe as Mr Squid isn’t a humanoid, as you can see, so I can’t use motion capture to apply an animation to his rig, which is very annoying as I was able to apply an animation to a humanoid rig during class quite easily.

Categories
Virtual Trajectories

Character Animation – Update #6

I have coloured the character different saturations of red to give it a more natural colour scheme. I have found this combination to be easy on the eyes as the colours are on similar wavelengths but they also contrast, helping them to stand out and grab your attention. I tried to colour the faces to look natural and curved, but in some instances this wasn’t as easy as the tentacles in the front. I ended up doing variations in what faces are what colour to add more detail to the model, and the curves from doing so look a lot better than if I had done jagged squares.

The velvet bowtie and top hat seem a little out of place with the simple texture of the character model, so I might change them later on but for now I will leave them until I have finished everything else.

Below is an image of the rig I set up for the model. There are five joints in each tentacle before connecting to the base of squid, and then there’s only a neck and head joint as the upper body is very simple in comparison.

You can see very faint lines attaching the tips of the tentacles to the main body. These are inverse kinematics handles to allow the entire tentacle to be controlled from the tip if need be.

The image below is of weight painting.

The grey area is the weight for one of the joints in the tentacles. It looks good in this image and nothing seems wrong, but when moving the joint other parts of the model that shouldn’t move do. This was very annoying. Turns out there was some weight in other areas that wasn’t being shown. Below is an image of what the weights actually looked like.

As you can see that’s a lot more than previously thought. And the default soft brush for weight painting was very bad at removing these weights. Luckily, I soon discovered that using the solid brush made the process so much quicker and easier to remove these invisible weights.

Annoyingly, something went wrong with Maya and it crashed when I had finished removing all of the excess weight. I had saved not long before, luckily, but my progress was set back to having to redo the weights.

Before I had coloured the model or started rigging and weight painting, I had a try and using blend shapes for the eye lids. the below image is of a duplicate model with the transformation applied to it that was to be used for blending. I haven’t gotten any further than this for blend shapes as I was getting frustrated with the models moving when they shouldn’t and other stuff, so I decided to come back to that later when I had cooled off and focused on the rigging.

Categories
Virtual Trajectories

Character Animation – Update #5

I have added the eyes and altered the eye sockets to attach to them. It wasn’t the cleanest job as when using the quad draw tool I ended up with an awkward placement of faces in some areas, so behind the eyes isn’t the prettiest, but I have removed all unnecessary faces behind the eyes that can’t be seen to reduce the polygon count.

As you can see in the image above the squid is definitely looking better with the eyes. I have also modelled a bow tie and top hat using the videos below and placed them on my character.

If you don’t want to watch the video, I shall now put a quick overview of the tools used to make the bow tie. You start with a cylinder, turn it on its side and scale up the long side. Then you want to add subdivisions and use the twist tool under Deform > Nonlinear. Duplicate the model and erase the old one. Smooth the model to add extra polygons and then use sculpting tools to add any details you want. After you’ve finished making any adjustments you want to the details of your model, you then assign the velvet material preset to the model and customise as you want. I also used the bend tool under Deform > Nonlinear to get the tie to curve in on itself a little as it was clipping through my model before.

The next video I only used the first minute or two and textured the model in the same way as the previous video. There was a lot of inserting edge loops and extruding for this model.

I’m not sure if I’ll keep the current colours and/or material on the tie and hat once I colour the character model, but at least they bring life to the character. Now to rig the character, and animate.

Categories
Virtual Trajectories

Character Animation – Update #4

I have finished using the quad draw tool to create a lower poly version of my character and I have smoothed it by one division. Below is the new model (right) next to the old model (left).

Next is to model the little accessories for the squid, add the eyes and alter the eye sockets to fit, rig the model, and finally animate.

Categories
Virtual Trajectories

Character Animation – Update #3

I have rounded out the tentacles and added eye sockets onto the model. Adding the edge loops to make the eye sockets seems to have defined the squid to look malnourished. This isn’t great, especially since it looks more creepy than cute now, but it is acceptable as the tentacles are also smaller and a little different to the original concept art.

I have smoothed out the model, which has added a great deal of polygons to the mesh so next I will be using the quad draw tool to create a model over this one with far fewer polygons.

Categories
Virtual Trajectories

Character Animation – Update #2

I started work on the tentacles of the squid using the symmetry tool but annoyingly you can’t do symmetry on two different axis at the same time. So, I decided to do symmetry on one axis and just focus on those tentacles before then doing the rest. For some reason, however, when shrinking some areas of the initial tentacle, the symmetrical tentacle woouldn’t always do the same, leaving me with two different size and shaped tentacles. It was then that I remembered about mirroring and just decided to do one tentacle and mirror it twice. The below image is the smooth result.

I haven’t finished modelling the tentacles, but having all four of them in place gives me a better idea of how it should look when done. You can also see the tentacles are all pointing upwards when in the designs half are pointing downwards. I have found modelling them downwards is much harder for me than modelling them upwards, plus the modelled position doesn’t matter since they’ll all be animated anyway.

Next I will need to make the tentacles thinner, rounder, and possibly move them further down to allow for a longer body. Then I will need to model the eyes in the head and smooth the entire model.

Categories
Virtual Trajectories

Character Animation – Update #1

I imported the front and left side views of the design into Maya and added them to an unselectable layer so that I can model with guides that won’t be selected whilst modelling.

Ideally, a cylindrical shape would’ve been best to start with but I figured the faces on the bottom would be awkward to use for the tentacles, so I started with a cube. I selected all of the vertices on each corner and moved them to the furthest points on the references to map out how big I would need the cylinder to be. I then made a sphere the same size as the four points and placed it above the cube and then started moving all of the vertices on the cube to match the circumference of the sphere. That gave me a cylindrical shape with the end faces of a cube. After that I just selected groups of edges and expanded or contracted to get the width of the cylinder in different areas roughly correct. I also used the soft selection tool to raise the top faces evenly.

In hindsight, I probably could’ve made a cylinder and cube and deleted the faces I didn’t want and connected the rest together.

Below, in white, are the attempts before the one shown above, not including the model that disappeared on me.

The left most white model I got the tentacles out front and back, but I couldn’t get them to look natural going diagonally. probably because of how flat/square the whole thing was. The next one I was having difficulty just doing the tentacles at all. I then tried a different way of doing them on the third model but that only worked if you’re looking at it straight on. The fourth model I moved vertices using symmetry but that didn’t quite give the natural spherical look, and the bottom was still very square.