For the past few weeks, I've been working hard on making a game environment that looks and feels like the final game should. I plan on putting the mechanics I finished in the blockout scene (mentioned in a previous post) into this scene and have a pretty cool vertical slice to release for free.
With this demo release, I, of course, will be announcing what the game is and overall just more info about it.
In putting together this environment I'm met with a few challenges:
The first being that in a greybox scene, it's very clear where you can and cannot go--that's the point, it's a basic prototype. But, with a finalized game environment, the design of the level itself has to educate the player on what to be doing, while still not making the player feel restricted.
This is especially difficult in a city map, where I only want a small section to be explorable, without making the player want to see other places that they can't access at that moment.
The other challenge is making the level design work hand in hand with the mechanics. Just because a level looks great, it doesn't mean it fits the way the game plays, and vice versa.
Especially in VR, where you can't stop the player from sticking their head in everything, AND a game where you should be able to run and jump wherever.
With some trial and error (and lots of rebaking lights!), this area seems to be coming together nicely.
Thanks for reading!
After messing more with the grappling hook (solving some issues, causing more), I've decided to take a bit of a break from it. From this point I've started working on the weapon system. Melee weapons are going to be next, after I finish the ranged weapons.
The problem with VR weapons is that you can't just hold down left click to shoot, and press R to reload. You need to have physical interactions. Yes, we can just add a gun object to the players hand and have them shoot it, but I want more than that.
For ammunition, there will be reloadable magazines that you have to find and use to add ammo to the guns, and hopefully, if I can get this right, you can slide down the top to cock the gun in place.
Instead of instantiating prefabs as bullets (this can be taxing on performance), I'm going to be using a raycast.
Because I'm using VRTK for my object interactions, there are multiple ways to handle shooting input.
I've messed with many of them, but I'm trying to find the one that has the best compatibility with existing functions.
I can either extend from their base InteractableObject class and just override the "OnUse" method, but this hasn't been working for me for some reason. I can also just subscribe to the use method, but this proved tedious to add to each usable object and I got fed up with it. Now I'm just checking if "TriggerPressed" is true in Update(), but the problem is this won't allow me to change the use button in the future. I'm gonna continue messing around with this to find the best way to do this.
Additionally, I've added a page on the site for my brother and composer Eli Mantell where you can listen to the entire Oh Captain VR soundtrack. If you want to use any of it, please contact him via the form on the page!
Thanks for reading!
Yes, once again there's more news about the grappling hook--who knew something so simple would generate so much blog content! Also, in the future, I hope to structure blog posts in mini sections like you see below:
Anyway, after messing with it some more, I struck a good balance between using the grappling hook, and climbing the environment.
Now only certain objects can be hooked onto. These include things you wouldn't be able to reach by just climbing.
The way I limited this is as follows: When holding the grappling hook, the hook part will be either red or green. When pointing at an object that can be grappled to, the hook will turn green, and the object will highlight yellow. This makes it clear what can and cannot be grappled on. This works perfectly. Because now you can't use it at any time (and therefore the object is listening for a controller trigger press at every frame), there is less bugs with the other inputs--though it still needs to be worked on.
I also changed the jump controls from the grip buttons to the touchpad buttons. Now you can hold one of them to move (walk in place, to put it simply), and immediately push the other touchpad at the same time, and pull back to launch yourself in the air. This makes it much easier to run, jump, land, and continue running immediately after.
All of this, in combination with the enemy AI, works really well to get around the environment, and hide from the enemies' field of view. Depending on the enemy's range, you can run away from a melee attack (sword slashes), or try to dodge projectiles being fired at you.
The primary way of getting around in this game is by walk-in-place movement, but I'm also working on a mechanic that relies on teleportation as well: Being that it's a stealth game--Oh, did I not mention that it's a stealth game yet?--one of the objects you can have in your inventory are Flash Bangs. Kinda like Batman. Or ninjas. Or both. Whatever.
The way they work is as follows: You grab one from your inventory. When you grab them, time slows down to 0.25 speed, and a teleportation cursor appears. You chose where you want to go, and warp there in a cloud of smoke, and time goes back to normal speed. This is essentially a special ability that will allow you to get to places you otherwise wouldn't be able to.
. . .
Once all of these are fully prototyped and work the way I want them to, I will be moving onto the actual level design, moving all the mechanics into what will be the actual game.
P.S: The image in the last post is a screenshot from one of the test scenes I made. It's cool, but the final game will look even better. :D
Thanks for reading!
Okay, so, first of all, yes, I changed the site look. I got tired of the old one and found one that I like better.
But, on to the more important stuff:
I am almost finished with the enemy AI! I've been working on it for a while and am super proud of what I have at this point:
There are three types of enemies: melee, ranged, and "flier"
The melee and ranged enemies are self-explanatory (one fights close up with hand weapons, while the other shoots from distances), but the "flier" is something different (excuse spelling, I wasn't really sure what to call it internally!)
It moves around the waypoints in the same way the other ones do, but at set intervals, it will fly up to the highest point, survey the area, then fly down. In the game, the player can run and jump on objects of different heights, so the enemies will react to that and try to fly up and shoot the player down. In VR it is not only quite nerve-racking to suddenly see the flying enemy coming up beside you as you're climbing, but it's a ton of fun to shoot them down from the sky as well.
I also worked on the interaction system a bit better. Now, objects that can be "used" will stay in your hand until you find an acceptable place to put them, allowing for the trigger button to toggle actions, such as shooting a gun.
Along with this, I've reworked the grappling hook to play better with VRTK (Virtual Reality ToolKit), and now it works so much better!
Instead of allowing the player to grapple onto anything, I've decided that it can only be used on certain objects you couldn't just jump to, like cranes above you, etc.
One of the next things I will be working on is a collision sound framework.
In VR, it's extremely important to make the world as immersive as possible, and this includes sound.
While music (more about this later this week!) and ambiance are easy to implement, but with so many objects moving around the scene, most of which are controlled by the player's hands, it's hard to have a single audiosource controlling all of them.
So, I've come up with a way to mark different objects as being "made of" different materials (such as wood, metal, stone), and depending on what type of object is colliding with it (while taking into account how hard the object hits the other object), a certain sound will play. While it's all still conceptual right now, I have a feeling that when I write it up tomorrow it should work properly.
More info to come about this awesome game! :D
Thanks for reading,
So, I originally wanted to implement a feature from Oh Captain VR into this game: the grappling hook.
I thought it would add another stealth element to the game, but I ran into two problems:
1) It made playtesters only want to use the grappling hook to get around, not the locomotion system I talked about yesterday, and made the game too easy and not very fun to use.
2) While it did work, having the physics object being usable in the player's hand made jumping wonky and inconsistent, which we cant have, obviously.
I'm considering just removing the grappling hook altogether because of these issues, and instead making the focus on stealth combat.
Thanks for reading,
As I've mentioned previously, locomotion in VR is always a challenge. For games with a smaller game area, you might not need any form of movement; Games with larger worlds, however, have to either use teleportation or artificial locomotion (when the player's head camera is essentially moved. Similar to how FPS cameras work, just in VR). Teleportation can sometimes break immersion, and artificial locomotion (AL) can cause motion sickness, so what do we do?
Well, after much trial and error with different types of movement systems, we've decided on "Walk in place" locomotion. While this might sound ridiculous (and the implementation in many games have been quite silly *ahem* LA Noire VR *ahem*), but with some tweaking, it can prove to be really cool. It's highly sensitive, so you don't need to swing your arms wildly to go anywhere, you can sorta just sway in place to move. Because your body is actually moving in the real world, there is less vestibular disconnect when the camera is moving. (Which causes motion sickness.) As someone who is usually extremely sensitive to VR motion sickness, I must say that it works really well.
The other issue is jumping: I've noticed that very few VR games have a jumping mechanic. Doom VFR has a really good jumping implementation, where if you move your hands up by your head quickly, you'll jump. This works well and feels great to do, but its easy to confuse normal movements for jumping movements, and that gets annoying fast. What I've done with this game is if you hold the grip buttons on both controllers at once, then essentially pull yourself into the air, you'll jump. Almost as if you are propelling yourself from an invisible slingshot. The amount you jump is directly proportional to the amount you pull yourself, so it's easy to get the hang of and is very accurate when jumping from building to building (*spoilers!*).
In terms of objects, unlike in Oh Captain VR, where objects just become a child of the controllers, allowing them to clip through other objects, the objects in this game track with the controller movement, meaning that they move with physics and collide with each other and other objects in the scene. This means you can duck behind cover, holding a gun against walls/corners/counters and shoot blindly at enemies--it's a ton of fun.
I'm super excited to share more info with everyone as the development progresses!
Thanks for reading,
So, after the unfortunate debacle that was the demise of Oh Captain VR, I started working on my next project. Though I won't reveal what it is exactly just yet, it is something that I've wanted to do since I first started working with VR and I am super excited about it.
I do have a level mockup that I will show sometime, but I've been focusing on finalizing the core gameplay mechanics of the game in a "greyboxed" level.
It has a heavy focus on parkour in VR, with running and jumping across rooftops, along with shootouts, stealth elements...flash bangs, telekinesis, steampunk robots, and more... As someone with a surprisingly weak stomach for VR motion sickness, the way locomotion is handled is important to get right. I'll be explaining exactly how it works in the next post.
It's gonna be super cool, I promise...
PS: Yes, I know there's the annoying "Weebly" branding on the site. As of a few days ago, they changed something that breaks the custom code I added to remove it. I'm working on a fix currently.
Thanks for reading!