codename OUTbound
Timo Jairus
In codename OUTbound you must escape out of bounds using bugs and parkour. It's a first-person 3D platformer, where your goal is to escape the facility, by making use of the "bugs" in the simulation. It will feature "meta" stuff, like in-universe quicksaving and loading. The levels will feature invisible walls, kill triggers and fall damage. The most obvious path is not always the correct one.
The game will be made using Unity and it will be a 3D game. The goal is to at least have a minimum viable product by the end of this course. This would include movement mechanics and at least one gameplay level showing off all the different mechanics. The visual art style would be something "simple", with post-processing carrying the visuals. Possibly something like older PC games, such as Colin McRae Rally 2.0.
Difficulties will be coming up with movement that feels good and fun to play, coming up with levels that are intentionally designed to be exploitable and coming up with a story to tie it all together. I'm also new to 3D in Unity, so that will also be new. Previously I've only worked on 2D titles.
Inspirations include Cyberpunk 2077, Kokomando, SUPERHOT and Dying Light 2.
Milestone 1 (08.10)
- Research on 3D movement - 2h (actual: ~2h)
- Basic movement (walking, jumping) - 2h (actual: ~2h)
- Basic level for testing movement - 2h (actual: ~1h)
I already had some basic character movement done before this course, but I scrapped it, as it did not feel good at all. I followed a tutorial to implement a basic movement system using Unity's CharacterController, instead of Rigidbodies. I did have some trouble with ground detection logic at first, but I think I've gotten it to work decent enough for now. I also built a basic level with ramps, some walls and a basic platforming section. The ramps are at different angles to verify which ramps the player can and cannot go up on. It was very helpful for debugging jump logic. The walls are to verify how high our player can actually jump. The basic platforming section was made to test how the controls feel currently. I'm still not entirely satisfied with the controls and will definitely keep adjusting them.
Milestone 2 (22.10)
- Further research on 3D movement. (however long it takes to beat Mirror's Edge) (actual: did not have time)
- Add more movement features, such as double jumping and dashing. (2h) (actual: ~2h)
- Research how making levels will work (tech wise). (2h) (actual: ~2h, did not fully complete)
I was busy with other projects, so sadly I was unable to meet all the goals for the current milestone. I did experiment further with movement, finding a more advanced movement example that I then modified to add more features like double jumping and dashing. This new movement script also has momentum, which makes it feel a bit better. I also made a small test level, trying to make something where you need to exploit mechanics which may not be super obvious at first. Currently I have a level with at least 2 paths that get you out of the box (considered the level end for now).
Milestone 3 (05.11)
- Finalize movement, figure out what I want the game to play like. (3h) (actual: ~2h)
- Create two test levels with different techniques for comparison purposes. (3h) (actual, ~3h)
For this time, I tried comparing the workflow of making levels just using Unity cubes and such versus using ProBuilder. It's not even a competition - ProBuilder is a lot faster for prototyping levels. You can easily add shapes and adjust them: move vertices, remove faces etc, without needing to use an external 3D modelling tool. It's a lot more convenient than duplicating a bunch of cubes. I made two levels with ProBuilder and added teleporters to the "hub" world, so it's possible to check out all the levels in the build. They might not be too interesting from a gameplay perspective, but I was mostly experimenting with what's possible. One interesting thing is inverting faces on thin shapes, such as planes. It leads to the possibility of making "one way" passages: the side that gets culled does not have collision, letting you walk through. This could lead to some interesting situations.
Other than levels, I also slightly adjusted the movement - no major changes, just changed some parameters to make it feel a little better. I also added a quickload/quicksave feature, which currently just keeps your last saved position and lets you teleport to it at any point.
I don't really have any ideas on how to continue this project however, so I think I'll have to scrap this idea and think of something new for the next milestone.
Milestone 4 (19.11)
- Figure out an art style for the game. (2h) (actual: 1h)
- Create 5 3D objects that the player can move on. (3h) (actual: 3.5h)
- Think of the direction of the game. (1.5h) (actual: 1.5h)
- Bonus: Skybox, background (actual: 15 minutes)
For the fourth milestone, I mostly tried focusing on the visual side. The hardest part about making 3D objects was actually figuring out what I should make. This is also probably why most of my creations came out quite abstract, as I was just experimenting in Blender and seeing what looks somewhat interesting. I haven't really made any 3D models before, so this was new to me. I did have some previous Blender experience, however. I also picked out a skybox, or at least a placeholder one that I liked. It's not perfect currently, because this image wasn't really intended to be used for a skybox as-is, but the weird line in the sky can add to the simulation feeling. I also experimented more with the second-person gameplay idea by implementing a camera that the player can pick up and move around.
Milestone 5 (03.12)
- Polish camera interactions (picking up, rotation, etc) (2h) (actual: 1h)
- Implement limitations when using camera, to give the player a reason to place down the camera. (2h) (actual: 2h)
- Design a puzzle using the camera mechanics (2h) (actual: 2.5h)
Yet another milestone. This time I tried to polish up the camera interactions a little - they're still not perfect, but I think it's a bit better. Some things still need to be figured out - currently it's pretty much impossible to pick up the camera if you're already looking through the camera itself. I also added a new set of movement parameters for when the player is carrying an object, such as the camera. These limitations force the player to put down the camera to clear certain obstacles. I also designed a small puzzle. It's not perfect - I don't think it's currently fully completable just by looking through the camera view, mainly because you can't really pick the camera up again without switching views. Once this is sorted out, then it might be almost possible to clear it. I also implemented respawning, because otherwise it would've been very annoying to play this level.
Milestone 6 (17.12)
- Expand the puzzle level (3h) (actual: 3h)
- Improve the movement - make it less confusing. Try to get rid of first-person view. (3h) (actual: 3h)
- Bonus: Initial UI, audio? (actual: UI - 20 minutes, audio - not done)
The final milestone. I wanted to have something that is playable. Currently, there is one (not very long, but still) level, which takes me about 5 minutes to finish. It IS doable without first-person view now, but sometimes you can lose track of the player, which is confusing. I also added some basic UI - a timer that counts your time and an end-screen which tells you how much time you spent on any checkpoint. The fastest time also gets saved, though the system for it could definitely be improved. The camera will also respawn now when thrown off the map. It may be a little confusing finding the player again, but at least the camera won't be lost forever. There's also a way for changing the FOV - I'm not entirely sure if this should be a gameplay mechanic, but sometimes it felt like the camera FOV was way too low, so now you can adjust it by pressing N and M. Oh, and probably one of the biggest changes of them all - the turning now uses tank controls. This actually makes it a lot easier to control while looking through the camera lens.
Project Expo (24.01)
- Polish. A lot of polish.
- Improve the level further.
- Functional leaderboards.
- Audio.
- Maybe controller support.