Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

The Submarine Game - First Thoughts

A topic by raycaster74 created Jul 15, 2018 Views: 155 Replies: 4
Viewing posts 1 to 4
(2 edits) (+2)

Hi fellow gamedevs! this is my first game jam ever so please be patient.

Yesterday did a bit of brainstorming with my son as to find a nice concept for a game that I could build in time for the Jam.  Wanted to use the theme of Water for simplicity and because in itself it's always fascinating anyway. He's an incredible ally to have because he's creative and his mind goes into places where my years of office work have forgotten about.

He wanted something as ambitious as a clone of Subnautica but i managed to convince him to hold his horses and reduce scope to something achievable in two weeks . So we (well, he mostly) came up with this idea:

"Harold Wickers and Edward Johan are two researchers hired by a company called Underwater Life to document endangered  underwater species. They have been provided in good faith with a donation of the research submarine Deep and suitable contracts to retrieve footage from marine species at three levels in the ocean:  the surface level, the twilight zone and the sea floor. However, at the beginning Deep is only capable of navigating the surface level - further adjustments and upgrades will be needed to explore the other two levels. Deep is launched into the sea by a scientific vessel, the HMS Abyss Hunter.

As Deep is a research submarine it is only fitted with  a HD video camera and an advanced species detection system to help it find the creatures specified in the contracts. Once in close proximity with a species the video camera will be activated and the submarine needs to remain close to the animal for the time required to capture suitable footage.

By fulfilling a contract and once returned to the ship, the explorers can receive credits to refuel, fix and upgrade the submarine.

Obviously, marine dangers await the two explorers in their quest but there's also something they suspect the company hasn't told them about - maybe a secret lurking in the depths of the ocean? that no one else's eyes have seen?"

As this is mostly a side project (got a family and day job to take care of) I've created a Trello board to keep track of what needs to be done . First time using it, as at work we use Jira but I think it's too much really - wanted to keep it as simple as possible:

The gif above shows the progress made on the first day. Managed to create some crude sprites (I'm in serious need of an artist - completely lacking those skills) and made the submarine move a bit fluidly using lerp() to a fixed target speed on a kinematic body2d. Also, using an inverse gravity force as to provide a sensation of positive buoyancy - haven't yet decided if this is best or if maybe let the sub oscillate between two fixed points of the y axis.

I guess the marine species should swim in kind of a sinusoidal cadence, randomly raising or lowering their cruising depth - any suggestions?

Don't know most of this yet - I'm learning these techniques as I build.

For marine species detection I was reading a bit about ray-casting. My idea is that when the submarine faces a certain direction it indicates to the player (maybe through a blinking light) that a species is in a given direction and out of view. Blinking can go faster as they get closer (maybe an Area2D is the best for this?).

Once the sub is close to the marine animal - I'm thinking inside another Area2D surrounding the target - the camera recording action is active and user has to press a button. Sub has to remain close for a limited time until footage is complete.

This is enough posting for now. I'll be grateful for feedback when I get back to work tonight and hopefully will have some comments .

Semper Fi Game Makers!


the trello board looks great so far! i might recommend using labels for priority (red-high, yellow-mid, green-low) since you're already using lists to show what stage a card is at--no need to show stage in columns and in labels. you can also make labels for categories like design, programming, art assets, etc. and use multiple labels per card.

also the motion definitely feels v much like it's underwater! i'm not sure i can offer advice on  how to solve those problems and i might have missed it but have you mentioned what engine you're using in case other people in the forum might be able to offer advice?

Deleted post

Hi J, thank for your helpful reply - these are the answers

  1. Will take your advice for Trello - definitely a better way to manage
  2. The engine I'm using is Godot 3.x   

Thanks again!


Update #1

Still haven't decided on how to simulate the underwater animal movements  - I'd like them to cruise lazily at a certain depth, then occasionally dash towards something (maybe something appetizing ?) and change direction and depth at random intervals - not too erratic though.  I'll need to give it a bit more thought but will leave this for later . 

Also, I've struggled a lot with handling collisions in the way I want.  The sub now collides and  "loses" player control for 3/4 of a second as it bounces of the obstacle and takes damage. I'd like the creature to respond by swimming away when this happens too. My understanding  of Godot's KinematicBody2D collision model is that after it moves_and_collides() one must handle both the response of the moving agent and the body that was collided into - It seems to me that this code has to be done twice  in mirrored fashion (for both sub and creature move_and_collide())

Another frustrating thing I've struggled with is not being able to flip the collision shapes whenI flip the sprites on my game objects .  Tried using :

apply_scale(Vector2(-1, 1)) 


set_scale(Vector2(-1, 1)) 

on the collisionshape2D for an horizontal flip without success (strange behaviours encountered). If somebody knows how to do this correctlky, will be much appreciated.

Also learned a lot about colision masks (applied them) and also tring to put signals into my objects to reduce coupling.

so far today i've got:

  1. smoother sub movement
  2. area2d to smulate the "camera ready" in proximity of a creature
  3. crude creatures movement
  4. basic HUD with damage indicator
  5. player damage logic
  6. better sub collisions handling
  7. physics collision masks

Here you can see I've used Godot's colliision shapes debug views - specially the "camera ready" around the sub.

I'm exhausetd! tomorrow will keep going. Quite amazed at the amount of creativity I've seen by other game devs so far.

Until next time!


unfortunately i don't know too much about godot and the way it handles sprites/collisions but you might be able to ask on the discord (or even godot's community if it has one). this is really awesome progress so far--it's great that so early on you've got the full game cycle from start to game over and including an updating HUD as well!