Ludum Dare 49: My second game jam
As the heading describes, Ludum Dare 49 is the second game jam I’ve participated. It’s a 3-days game jam (for Jam, Compo was 2 days), and I believe Ludum Dare hosts the biggest game jams all around. It’s only two days in for the Play+Rate period, and I’ve already gotten quite some feedbacks, I think it’s mainly due to the Smart balance Ludum Dare uses for game sorting.
As the time was tight for the game jam, I didn’t have time to properly write devlogs for Cheating Simulator during the jam. So here’s a devlog for all the work I’ve done in 3 days.
Game Idea
The theme of the game jam was ‘Unstable’. I wasn’t quite sure what to do with this theme, and I didn’t want to do obvious things like stacking stuffs and gravity and tipping over, as I think they are too mainstream. The idea of unstable relationship was contributed by my housemate, and I derived it into Cheating Simulator, which is the game I made.
The gameplay and core mechanic is quite simple. You run around the city and date as many people as possible. Once you’ve dated a person, that person will become one of your lover. You’ll want to date other people outside of you lovers’ line of sight — getting caught cheating means game over. And here comes the ‘Unstable’ part: your relationship with your lovers degrades over time, so you’ll have to re-date them to rescue the relationship. If the relationship is let degrading, it will eventually goes into an unstable state. An unstable lover will try to find the player aggressively, and force the player to a date if found. Basically, it’s a combination of dating sim and stealth game.
Camera and movement
I’ve decided that the game will be in an isometric 3D game, so the camera tracking should be quite simple, I just have to keep it in a fixed offset in relation to the player. One thing to mention is that the position of the camera should be updated in LateUpdate(), so it’s not lagging behind the actual player position.
In terms of movement, I originally implemented click and move using Camera.ScreenPointToRay and NavMesh to move the character around. But the movement felt clunky and not quite responsive, which is a big NO to a stealth game. I ended up using a modified version of the movement mechanic from Sebastian Lague’s Field of View tutorial, which I discovered when implementing the stealth part of the game.
Dating and lovers
The dating mechanic is simple, when you press space bar, you will start dating the nearest person (if any is in range). Once the dating started, the player cannot end it manually. Each lover will have a relationship integrity value, which decreases over time. Dating a lover will increase the integrity value, and the date will automatically ends if it’s full.
If the integrity value degrades to zero, the lover will go into an unstable state: runs around with 2x speed, vision cone becomes red, has a 50% chance to go near player instead of wandering around, force player to date if it’s within field of view. Originally the unstable lovers will always go near the player, but if the player runs around the city in a circle, they will all converge and run towards player from a same direction, which makes them easily kite-able.
I’ve also added and indicator above the lovers model to show the state and relationship integrity of the lover. A lot of work is put into making it stays on screen when the lovers is out of camera view, and show a little arrow for the direction of the lover. From the feedback I’ve gotten, it seems that the players do appreciate this.
Stealth and Field of view
The vision and field of view mechanic is heavily referenced from the tutorial from Sebastian Lague, which I mentioned above. Only people the player dated will have the field of view cone, if a player dates another person within this cone, the game will end.
Models and Animation
I’m not good with art, so naturally I used 3rd party assets for the models and animation. The 3d assets I used are from Synty Studio, specifically the POLYGON – City pack. Honestly I think the Office pack or the Town pack would be a better fit, but I’m not going to buy any assets just for a game jam. I do have other packs like the Samurai pack or the Sci-fi Space pack, but I don’t think they fit in the game well.
The animations are from Mixamo, a great source for free 3d animations.
Music and SFX
All the audio are from Ultimate SFX & Music bundle I bought during a sale. It’s a nearly 10 GB pack with tons of audio. In my opinion, the music and voice acting are just meh, but the amount and selection of SFX in the bundle makes it worth the money.
I think SFX is very important to the game feel, not sure why so many devs aren’t adding it to their game. Perhaps it’s due to the time limit on game jam? Even so, I think SFX should be prioritized, a tiny amount of SFX is enough to make a game feel 10 times better.
UI
The UI is constructed using free assets from Dark Theme UI, it provides clean and minimalistic UI elements, which I think is a great fit to the game.
From my experience from playing indie games on itch.io, one common pain is the music volume, so I always include a music and sfx slider in my game. I’ve also added option for user to choose the gender they want to date, and option to change the appearance of the controlled character.
There’s a fullscreen button on the bottom right of the main menu, which I think is a nice touch to any game. From the feedbacks I heard from other people for my last game jam entry, some people prefer playing games in fullscreen.
Optimization
To ensure the game run smoothly on the browser (so more people will play and rate the game), I have to make some optimization to the game.
- The lighting is baked for all static elements.
- The raycast calls and distance calculation are run in every 0.2 seconds instead of every frame.
- Only draw vision cone if the lover is within a certain range to the player
Future Improvement
Honestly I think the gameplay itself is as good as it can get. I’m not going to add any extra game mechanics, as I think that complexity is bad for this game. I’m just going to make fixes to any bugs found, add controller support, and probably make the UI more interactive (like mouse hover animation, and sample sound when moving SFX slider).
Pingback: ShurikenVR Devlog#14: Alpha build released! – boonlight games