Supershigi Forum

*Game Development* => Dev Logs => Topic started by: Charybdizs on April 21, 2015, 12:36:51 AM

Title: Charyb's Deep Ocean Lights
Post by: Charybdizs on April 21, 2015, 12:36:51 AM
As the month is half over and I have yet to record any of my progress here on the forums for you all to see, it's about time I do so, right?

So with no further delay, my leeble '15 game jam project is...

Deep Ocean Lights

Inspired by this song (, Deep Ocean Lights plays on the 'being lost' theme, as you lead some of the tiniest creatures on the face of the world to safety. You are a friendly light, and out of the dark recesses of the ocean you must lead bunches of luminescent plankton, up, up, to bask in the nourishing sunlight. However, the sun is not the only thing that shines tantalizingly beneath the waves, and your challenge as the player is to lead your children to the true light in safety, keeping them away from dangerous larger motes, and predators which would seek to draw them astray and consume them.


As a shepherd, you accomplish this goal by means of moving your own particle around an auto-scrolling environment, and emitting bursts of light (done by left clicking) in order to attract the smaller particles to you and away from potential hazards. However, you can only shine bright for limited amounts of time, so you have to carefully time things. Gameplaywise, this was inspired by both Osmos, and Flicky.


In a rather simplistic and reasonable way for this jam, I've chosen to not worry about resource creation for the purposes of saving time, and instead to represent this through vectors and two dimensional primitives, with pixel shaders and other effects applied to a particle rich environment. In other words, it's very shiny and pretty, but not very labor intensive. For example, I created a simple trailing node cursor for the player object, akin to the one in world of goo, and it looks fantastic!


So I have a lot of nice things I could do with this, LET'S SEE WHAT ACTUALLY HAPPENS IN THE NEXT TEN NINE DAYS!

List of things I have done and have yet to do

Basic framework.
The player object.
Delicious light trails!
Non-player particles.
Collision handling between all entities.
Gravity/Attraction algorithms. Could still use some tweaking. *wipes sweat*
Player shine power-meter.
Destructive particles and destruction handling.
Perfect attraction radius on player object.
Possibly add visual cue for aforementioned radius.
Falling debris that destroys particles it hits.
Add autoscrolling and begin creation of the actual level.
VERY IMPORTANT Fullscreen support for all resolutions!
Currents that push entities in them.
Obscuring mist/pollution that blocks parts of the playing field.
More good feeling particle effects????????
SFX and music.
System to write wise and charming words of advice on the screen as the particles follow their journey to the surface.
Background that moves and parallaxes with the player movement.
Treat myself to dessert?!
Title: Re: Charyb's Deep Ocean Lights
Post by: Charybdizs on April 21, 2015, 12:41:15 AM
I ought to add, does anyone know HOW I should handle different resolutions? Seeing as I'm rendering by pixel (with shapes being a fixed amount of pixels wide) and collisions are pixel perfect, how can I account for different size screens and huge resolutions and tiny resolutions while not screwing up the actual gameplay? Like, a small resolution won't be able to see as much as a big one (and seeing as this is a vertically autoscrolling game, this could be a problem if you can't see obstacles to your left or right because your screen is too small). This is a question that always plagues me in game design, and I still haven't found a good answer.

Also lol it turned my question marks in my first post into leebles :J
Title: Re: Charyb's Deep Ocean Lights
Post by: kreyg on April 21, 2015, 10:36:19 AM
Hey, looking good!  Very glowy!  :)

Regarding different resolutions:  That's kind of a complicated problem, yes, particularly if pixel accuracy is important.

You can simulate the gameplay at a different resolution than the display, and just scale the final image to the screen resolution.  That may require some sort of render-to-texture capability, I'm not sure what you're using to develop.

Aspect ratio throws another wrench in the works, but you can just letterbox for any aspect ratio other than the gameplay dimensions.

Hope it goes well!
Title: Re: Charyb's Deep Ocean Lights
Post by: Charybdizs on April 21, 2015, 10:54:22 AM
I'm developing using Monogame (XNA basically), and the only other library I'm using is one for drawing 2d primitives. So in other words, I can do whatever I need to do, I just need to know WHAT to do.

What exactly do you mean by simulating the gameplay? And where do I get the image from if I haven't drawn it yet (because it resolution issues)? I know XNA has methods for rendering to texture, but I've only used them in the context of shaders.

Letterboxing is a good solution, yeah. Not sure why I didn't think of that before.
Title: Re: Charyb's Deep Ocean Lights
Post by: kreyg on April 21, 2015, 11:06:02 AM
Well, I'd need to know a bit more about how you're doing your rendering and pixel-perfect collisions, but...

Screen resolution is completely irrelevant if, instead of drawing to the screen, you draw to a texture.  Just pick a fixed resolution and do everything you are doing now. 

Then, you need to draw a rectangle the size of the screen, using your generated texture as the source texture.  That should "stretch" it to the full size of the screen, regardless of resolution.
Title: Re: Charyb's Deep Ocean Lights
Post by: Charybdizs on April 21, 2015, 11:19:40 AM
OHHHH I gotcha! I didn't even know that was a thing people do, but it sounds perfect.
Title: Re: Charyb's Deep Ocean Lights
Post by: Ben on April 21, 2015, 01:34:04 PM
+1 what Kreyg said. Create a back image buffer at a target resolution, like 720p and draw to that buffer. Then stamp that to the screen.
Title: Re: Charyb's Deep Ocean Lights
Post by: Charybdizs on April 24, 2015, 07:03:18 PM
Got some more work done! This involved making destructive falling objects which... resemble meteorites moreso than anything else. Don't ask me why there are meteorites in the ocean! >:O
More importantly, I added a faint radius indicator for at what range the player object will attract particles, and another indicator to tell how much gravitational power you have left (it recharges when you're not holding the button), which is the inner ring. When it reaches the light you run out.

I also finally did handling for particle destruction and all (it happens when it hits a meteorite, for example) but it's not flashy yet. :( I didn't make any accommodations for a proper particle system (particle particle system? The entire game is made of particles...), but there are bigger priorities to handle first.

Title: Re: Charyb's Deep Ocean Lights
Post by: kreyg on April 24, 2015, 10:25:58 PM
That is looking really cool!  :)  I'm not quite sure what's going on, but I'm looking forward to checking it out.  I guess it's mouse controlled, the way it's zipping around?
Title: Re: Charyb's Deep Ocean Lights
Post by: Charybdizs on April 25, 2015, 05:16:52 PM
Yes, the main player object is mouse controlled, and left clicking creates the gravity well. Originally, I was going to have it controlled with keys, but that was... rather clunky. Controlling all the tricky little particles and moving them around is hard enough with a mouse where you can instantly re-position yourself, so with keys it becomes way too hard to manage. Plus, a fast moving mouse allows for nice effects. :)
Title: Re: Charyb's Deep Ocean Lights
Post by: supershigi on April 27, 2015, 04:51:00 PM
Wow, great job Charybdizs... it sounds like you've already gotten so much finished! I just wanted to tell you that I sat here watching the lights jump around in that .gif for like 5 minutes. The particle system looks excellent :)
Title: Re: Charyb's Deep Ocean Lights
Post by: small on April 28, 2015, 02:41:21 PM
Ah wow, this is so pretty!  :D Good job man!