Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411423 Posts in 69363 Topics- by 58416 Members - Latest Member: JamesAGreen

April 19, 2024, 06:48:53 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsNull and Void - A Cerebral Adventure
Pages: [1] 2
Print
Author Topic: Null and Void - A Cerebral Adventure  (Read 5600 times)
CaLooch
Level 0
***


lost in thought...


View Profile
« on: June 26, 2015, 10:25:12 AM »




Null and Void is a suspenseful action rpg placed in a surreal universe.  You play as a rag-tag group of misfits who have their lives interrupted when they are sucked into a mysterious machine, The Casket.  You need to escape before the Casket digests you.  It is eerie, relentless, and worst of all, hungry.


Demo Link: https://thecalooch.itch.io/null-and-void-demo



Welcome to the Null and Void devlog.  This is a game I have been working on for the past few months by myself, and I couldn’t be more thrilled to finally show some of it off.  I’ve been handling all of the design, programming, and art so far.  The art is a constant work in progress so none of this is final. There’s honestly a lot of information to dish out about the game so I’m just going to treat this post like a table of contents and fill in the blanks as I go.

The Characters

Each of the characters in this game were made with the intention of being as unique as possible.  I wanted it to feel like every one of them has their own look, game play feel, and story.  Let me introduce you to my kids.  



Poe
The pygmy of the playground, Poe is not treated with much respect.  He’s a built up bottle of insecure rage that he may inadvertently dish out on someone.  

Petal
Petal lost her husband when her village was attacked by a pack of roaming Burgles.  She’s a widow, she’s depressed, and will stop at nothing to protect her only son.  All she has left is her little one and an unbearable amount of grief.

Woogie
Woogie is that big personality at the party.  He’s loud, obnoxious, and completely incognizant.  He was once the hot stud of the town, but now he’s just overweight and constantly living in the past.  His hobbies include spending nights at the club, getting turned down by women, and wiping powdered sugar from his nose/upper lip.

2bit
2bit was born three weeks premature to a drug addict mother.  She was soon abandoned because her mom could not take care of a sick child.  2bit was luckily taken in by a local street gang.  Nowadays, she spends her time throwing up graffiti tags around the city and running from the police.  

Lumen
He can’t sleep. He hallucinates because he can’t sleep.  Maybe he’ll finally be able to fall asleep?  Probably not.  Lumen is a chronic insomniac.  Why?  If he falls asleep, his personal little light bulb goes out, and the monsters show up.  They scare the utter shit out of him.  The poor guy just wants to take a nap.


The “Setting”
The way the game goes, is that there is a unique starting area for each character.  These areas are there to provide some context to the characters and from a design perspective, a way to introduce some of the basic mechanics.  It’s here where each of our characters come across this strange machine, The Casket, and are sucked inside.

The Void
Upon being swallowed whole by this bastard contraption, you find yourself in The Void.  



I would describe it as being this ominous paradox.  You’ll see the Casket digesting other creatures around you.  Worst of all is that you really can’t escape.  It doesn’t matter which direction you head in, you’ll just go in circles.  Your only way out is to tear open your own door.


Enter Murphy and Stella



Murphy and Stella are a couple of terriers that you come across in the Void and they want to help you escape.  I’ll end up saying it a lot through this devlog, but this isn’t the type of story where everything is explained to you right off the bat.  It’s a rogue-like at its core, so the story is a slow burn.  Murphy and Stella’s story is more on the mysterious side.  All you need to know for now is that they’ve been in the Casket for a long time, and they know their way around.

As you wander through the Void, the dogs will help find spots to potentially break out of.



Enter The Null

You’ve done it! You’ve busted out of the Void, but its not over yet.  Heres where its business time.  You’ve managed to slip through the cracks of the Void and you’ve dropped yourself right into a chaotic maelstrom.  

The game can progress in different directions from here but for the most part, the Void acts as the central hub.  You cut into different sections of the Casket that take you to different locations in the Null or to other areas you might find.


The Combat



Now it’s time for the fun stuff.  My initial idea for this whole game was that I wanted to make a replayable hack and slash.  I wanted the gameplay to be very quick and aggressive and as time went on, the design lead me to what I have now, which is more of a fast paced action-rpg than a hack and slash.   I really tried to stick the the design principle of it being “simple to pick up, difficult to master”.  I may have strayed a little from the “simple to pick up” part but we’ll see in time after seeing other people play test.



The combat centers around 4 types of skills: Light attacks, Heavy attacks, Specials, and Passives.  The light and heavy skills are your main means of attacking.  Passives are self-explanatory.  Specials are more based around supporting your other skills.   You use these skills by consuming energy.  The energy recharges quickly to maintain the quick hack and slash feel.
 
A large element of this whole system is utilizing buffs.  A lot of these skills will apply buffs to your character.   The above skill can be an example.  One Two, when used, will apply a short buff (~5 seconds) that will increase the damage of your heavy attacks. Why 5 seconds? It’s largely based around balancing the whole system.  A light attack, which costs a relatively small amount of energy, can be used many times in a few seconds before you deplete your energy.  These buffs stack as you keep applying them.  If they had a longer duration then you could just sit out of combat, spam your skill, get 25 stacks of the buff, then walk into combat and 1 shot enemies.   The 5 seconds is a sweet spot in the system right now where it’s long enough for the player to make use of it in combat but short enough to keep the number of stacks from getting out of control.

The whole system is still a work in progress, needing little tweaks here and there, but I love the feel of it at the moment.  It’s very dynamic and I think players will really like it.  I’m personally not a fan of when the damage in a melee based game just slowly ramps up (you’re hitting for 5, 10 minutes later you’re hitting for 6, 10 minutes later you’re hitting for 7, etc).  This game doesn’t do that at all.  The amount of damage you’re doing changes on the fly depending on what buffs you have on, the skills that are utilizing those buffs, and let’s not forget combos.  Yes, there are combos.

As you progress through the game, you’ll acquire more skills and have to make decisions about which skills you’ll want to use in combat.  Some work well together, others do not.







State of the Game

I started this game back in January of this year with no real clear idea of what I was going to make.  After several months of iterating through designs and waking up from weird dreams, the game is what’s up there.  Since this is a roguelike, I intend to have a lot of different skills, enemies, bosses, and the likes but I wanted to firmly set up the frame work for everything before I started going ham on the content.  The last thing I want to do is spend a few weeks on 10 new enemies only to realize months down the road that their designs aren’t appropriate anymore.  So it’s been nothing but working on the framework of the game.  I would say about 80-90% of this framework is there and implemented.  Once that’s all done, then I can really start getting busy with all the content and polish.  

Feel free to tag along on the progress and let me know what you think.  I have some pretty thick skin so I would love nothing more than to hear that you think certain parts of the game are garbage and need more work (Except if you criticize my kids.  My inner soccer mom might come out).

You can follow me on twitter https://twitter.com/TheCalooch

« Last Edit: May 06, 2017, 08:04:47 AM by CaLooch » Logged

COOLIO5676
Level 0
**


View Profile
« Reply #1 on: June 26, 2015, 11:23:32 AM »

looking pretty dope for just 10% completion. if you don't mind me asking, what are you using to make the game? i ask because i think i detect a fellow flash developer, which is always cool Beer!

also, i dig your character designs, especially poe. I'm guessing he's your favourite too?
Logged
CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #2 on: June 26, 2015, 11:26:41 AM »

looking pretty dope for just 10% completion. if you don't mind me asking, what are you using to make the game? i ask because i think i detect a fellow flash developer, which is always cool Beer!

also, i dig your character designs, especially poe. I'm guessing he's your favourite too?

I guess we can sense our own Wink  the game is actaully done in LibGDX buts its all vector art.  I got my start in game dev making flash games so thats where my roots are.

and my kids?  i cant pick a favorite, but poe was the first so he's been the one ive been developing with since the start
Logged

COOLIO5676
Level 0
**


View Profile
« Reply #3 on: June 26, 2015, 11:33:36 AM »

looking pretty dope for just 10% completion. if you don't mind me asking, what are you using to make the game? i ask because i think i detect a fellow flash developer, which is always cool Beer!

also, i dig your character designs, especially poe. I'm guessing he's your favourite too?

I guess we can sense our own Wink  the game is actaully done in LibGDX buts its all vector art.  I got my start in game dev making flash games so thats where my roots are.

and my kids?  i cant pick a favorite, but poe was the first so he's been the one ive been developing with since the start

first ive heard of libgdx actually, but it looks solid. i guess it was the vector art more than anything that made me think it might be flash. vector art is a tough route to go on but its a good way to differentiate yourself. kudos!
Logged
CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #4 on: June 27, 2015, 02:48:36 AM »

I've been working on adding a few skills in as I go here and there.  The icons have been fun little illustrations.



From left to right we have:

Can't Touch This | Passive | Increased speed
Dash Bolt | Passive | Dash is now a Light attack
Haymaker | Heavy | Increased knockback
N.R.G. | Passive | Increased energy
One Two | Light | Temporary Heavy damage
Ghost Jab | Light | Temporary speed
Power Please | Special | Temporary damage
Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #5 on: June 28, 2015, 11:25:38 PM »

I've been working on platforms in the null the serve as pits.  still working on fitting it into the gameplay.  I do have it so you can knock enemies off before you fall into the pit but getting it to look nice is another story. 

Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #6 on: July 01, 2015, 01:32:24 AM »

Update 1 : 7/1/15

I wanted to talk more about the story of the game because I realized that I didn't really go into what the story is really about.  The whole deal with The Casket is that its suppose to be this machine that you don't know much about and inside the machine you'll come across references to this guy, the man in the box.  He's really the central element to the whole game.  You don't see him but you see that theres evidence of him lurking around.



As you play you'll drop into these rooms that have all of this strange writing on the wall.  They look like equations where someone is trying to figure something out.  It looks like there is something missing from the equation so as you play through you'll pick up items, like this strange glyph.



It looks like it fits into the wall.


Logged

Sgt. Pepper
Level 1
*


View Profile
« Reply #7 on: July 01, 2015, 04:59:25 AM »

LibGDX? I've been hearing about more and more people using it, and since I already program in Java, I may give it a shot some day.
Logged
Impmaster
Level 10
*****


Scary, isn't it?


View Profile WWW
« Reply #8 on: July 01, 2015, 09:28:23 AM »

I like the art style you have going on. The main character does seem to run abnormally fast though, I don't know if that would feel good. Also an image in your original post is broken.
Logged

Do I need a signature? Wait, now that I have a Twitter I do: https://twitter.com/theimpmaster
CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #9 on: July 01, 2015, 01:51:02 PM »

LibGDX? I've been hearing about more and more people using it, and since I already program in Java, I may give it a shot some day.

if you're a java programmer, its definitely worth taking a look at. 

The main character does seem to run abnormally fast though, I don't know if that would feel good.

I wont disagree with you, that he moves pretty fast.  Im pretty far off from where ill be fine tuning things like the speed.  Part of the reason he's so fast is because Poe is supposed to be the fastest of the 5 characters.

The other reason that its set pretty fast right now is because of this spectral mode that im working on.  It will probably be in my next larger update.  Its a part of the game where speed is really important so it just makes it easier for development if the character speed is ramped up.
Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #10 on: July 02, 2015, 03:09:30 PM »

Update 2 - Controls & UI

I was hoping to get some feedback on the controls and ui for the game.  I'm just developing them for the keyboard right now, but I wanted to whittle them down to where it can transfer over to a game pad easily (which I think the game will play better with).

As it stands, the controls are:

WASD - movement
U - skill 1
I - skill 2
O - skill 3
P - skill 4
Shift - Skill select/inventory
Space - dash

On the hud, there is your life, energy, and your 4 equipped skills



I mentioned earlier that a lot of the skills apply buffs, so I figured the most compact location would be just over the skill hud. I'm still thinking about doing possibly different layouts and positions.  I've also been thinking a lot about those buff icons.  I was thinking that just reusing the image from the skill would do, but I'm more inclined to create more generalized icons, like a " +DMG " texture or something like that.

The skill select/inventory is what I'm kind of worried about.  



The fact the I have to explain it is what worries me.  Shift brings up the inventory.  When you bring it up, you have skills in the vertical column and items in the horizontal column.  To equip a skill, you highlight over it and bind it to U,I,O, or P.  Press shift again to exit your inventory.  Granted, I haven't prettied any of it up (There will be some sort of texture saying "Press X to equip" and "Press Shift to close").  Start to finish, to equip 1 skill its a minimum of 4 button presses and to me it seems like 1 or 2 too many.  The issue with streamlining to some simplified version of this is that you gain more skills as you play and your items come and go.  So doing some sort of wheel ui that you can move around seems tricky to work out graphically.  There is also the issue of binding the skill to the specific key that you want.

The other little thing I'm hesitant about is putting that stat ui in there with the inventory.  It feels like I'm throwing too much info at players from a single button press.



Logged

Impmaster
Level 10
*****


Scary, isn't it?


View Profile WWW
« Reply #11 on: July 02, 2015, 05:26:45 PM »

That control scheme looks pretty hideous, altohugh I haven't tried it. I'd suggest moving the skills down to hjkl, cause those keys are on the same level as wasd, so it doesn't feel like one hand is far ahead. Also Shift as an inventory button sounds really weird.
Logged

Do I need a signature? Wait, now that I have a Twitter I do: https://twitter.com/theimpmaster
jctwood
Level 10
*****



View Profile WWW
« Reply #12 on: July 03, 2015, 03:39:02 AM »

I love the visual aesthetic of the world and its characters though the UI elements don't fit hugely well in my opinion.
Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #13 on: July 03, 2015, 03:49:46 PM »

That control scheme looks pretty hideous, altohugh I haven't tried it. I'd suggest moving the skills down to hjkl, cause those keys are on the same level as wasd, so it doesn't feel like one hand is far ahead. Also Shift as an inventory button sounds really weird.

I guess it will be easier to criticize once a demo is out there for ppl to try.  Its been just me playing and testing this since the beginning so the controls just came out of piecing together controls that felt right for me, not necessarily whats considered conventual.  Shift is to open the inventory just because my pinky naturally hovers over it while using WASD.  I am thinking that maybe something like Arrow keys for movement, Z X C V for skills and L-ctrl for the inventory might work too (and probably better for ppl without a qwerty keyboard).

It'll probably go through some bigger changes once a demo is out.

I love the visual aesthetic of the world and its characters though the UI elements don't fit hugely well in my opinion.

Thanks! about the look of the Ui elements, those are the only things ive shown that are 100% placeholders.  Its more so the layout that Im concerned about.


Thanks for the input everyone
Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #14 on: July 05, 2015, 07:30:44 PM »

Update 3 - Spring cleaning in the Summer

I wanted my next update to be about this spectral mode ive been working on but yesterday I realized that I needed to do some serious clean up with my code.  I chronically drop
Code:
//todo: clean up
 all over the place and just come back to them later.  I ran a search for those today and had 108 of them to take care of.  

 I wouldnt say im a master programmer (Im just a lowly cs student)  so dont hold any of this against me. Wink

One of the big issues that I had to take care of was how I was handling timers. Since the beginning I was just handling anything that required a timer with an individual thread.  I was using this code for most of what I needed:
Code:
public class UtilityRun implements Runnable{

    public long TIME;
    public boolean running = false;
    public boolean complete = false;
    
    public void setTime(long time) { this.TIME = time; }
    
    public UtilityRun(long time){
        this.TIME = time;
    }
    
    @Override
    public void run() {
        try {
            running = true;
            Thread.sleep(TIME);
            running = false;
            complete = true;
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void reset(){
        complete = false;
    }
    
}

and start the thread up with:

Code:
UtilityRun dmgRun = new UtilityRun(1000);//ms

Code:
dmgRun.reset();
Thread thread = new Thread(dmgRun);
thread.start();

It got the job done most of the time.  I would just throw in update methods checks for whether the thread was running or complete.  But I realized pretty recently a really big issue.  Players pausing the game and resuming would completely screw up these concurrent threads and would be a nightmare to manage if I had to pause and resume all the ones that were currently running.  Another big issue is that there were a lot of memory leaks and performance issues slipping through with some of these threads not disposing properly when they were finished.

So I reworked the whole way I'm doing timers for the game where its based off a frame counter.  The above was replaced with something like this:

Code:
public class FrameCounter {
 
    public boolean running = false, complete = false;
    protected int CURRENT_FRAME, MAX_FRAME;
    
    public void setTime(float time) {
        MAX_FRAME = (int)(time * Math.pow(MainGame.STEP,-1));
    }
    
    public FrameCounter(float time){
        
        this.setTime(time);
        
    }
    
    public void start(FrameManager fm){
        fm.add(this);
        reset();
    }
    
    public void step(){
        if(complete) return;
        
        CURRENT_FRAME++;
        running = true;
        
        if(CURRENT_FRAME >= MAX_FRAME){
            complete();
        }
    }
    
    
    public void reset(){
        running = false;
        complete = false;
        
        CURRENT_FRAME = 0;
    }
    
    public void complete(){
        complete = true;
        running = false;
    }
    
}

where the individual entities are handling their own FrameCounters with a FrameManager that is updated in their person update method.

Code:
public class FrameManager {
    
    
    private final Array<FrameCounter> fCounters = new Array<FrameCounter>();
    private final Array<FrameCounter> fCountersToRemove = new Array<FrameCounter>();
    
    public void update(){
        for(FrameCounter counter: fCounters){
            counter.step();
            
            if(counter.complete){
                fCountersToRemove.add(counter);
            }
        }
        
        for(FrameCounter counter: fCountersToRemove){
            fCounters.removeValue(counter, false);
        }
        
        fCountersToRemove.clear();
    }
    
    public void add(FrameCounter counter){
        fCounters.add(counter);
    }
    
}

Live and learn.  The chances of me making another game using threads that way are slim to none.  They were a several month headache to deal with.

So I plugged several memory leaks and helped out the performance a bunch with the new code.


Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #15 on: July 07, 2015, 01:47:30 AM »

Update 4

new death animation for Poe

Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #16 on: July 09, 2015, 09:10:44 AM »

Update 5 - Personal deadlines and Sound

I've been trying to keep myself motivated and working constantly on this project since the start.  One of the things I've been doing is setting personal deadlines for myself to just have something to work towards in the short run.  Right now I set a date that I want to have a playable demo up and running.  It helps to just subtract from the day counter once a day as well.



Sound

The past few days, I went in a development direction I didnt expect to go into, sound.  This was actually something I was worried about since the beginning because I wasnt sure how I was going to handle getting music and sound effects for the game.  The option I was holding in my head for the longest time was that I was going to find someone to collab with.  The worry came from how I could pay this person and the answer was that I couldnt. On top of me not knowing how long I would be working on this game for, I didnt want to just string someone along with the promise of rev shares.

Well I found an answer for now.  I was going through /r/gamedev on reddit and stumbled across this which lead me to
https://audioblocks.com/

I checked it out, and it was just what I needed.  Royalty free, unlimited downloads, solid quality.  The catch is that there's a $100 annual subscription fee.  I went scanning around the internet for other testimonials and ppl had good things to say so I went with it.  A few hundred downloads of music, sound effects, and loops later and Im not disappointed with the decision. 

An added bonus is that LibGDX handles sound very cleanly.  It didnt take more then a few minutes to get things up and running how I wanted.
Logged

Bluebutton
Level 1
*



View Profile WWW
« Reply #17 on: July 09, 2015, 12:40:05 PM »

Personal deadlines are always useful. You also have a whiteboard which is half the battle frankly.
Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #18 on: July 10, 2015, 02:51:23 PM »

Update 6

I felt like iterating over some placeholder enemies today so I cleaned up this goober




NEW




The combat is still lacking the "oomph" that Im looking for though.  I may have to play around with some screen shake again.  I threw some in the code awhile ago but it wasn't too clean of an implementation so its outdated now.  We'll see.

I will say that I love playing around with Box2d as a physics engine. 
Logged

CaLooch
Level 0
***


lost in thought...


View Profile
« Reply #19 on: July 14, 2015, 07:13:20 AM »

Update 7 - Null design and tie ins to the UI

The null has been a concept thats been apart of the game since the beginning so I feel like talking about its design.  I decided pretty early on that I wanted the void to be slow and eerie and the null be the part to get players excited with more action. Originally, I was thinking about doing things in a binding of isaac sort of way, where the null would just be one small room/platform wtih a fixed camera, clear the few enemies in there and get out back to the void.  That idea didnt feel like it had enough meat to it, since you spend a relatively decent amount of time in the void finding tears.  So I transitioned to a more randomly generated level.  In the beginning of the game, there will be a few sections in each null and theyll get bigger as you go along.




To make the entire design make sense and have context with the game, just walking into a tear and spawning on a bunch of platforms didnt really make sense.  I wanted the null to feel like it was this huge chasm that you were falling into.  As a result, I started playing around with the cameras a lot more, specifically their zoom.The code breaks up the rendering process into layers.  On each pass, that layer has its own dedicated value for the zoom of the camera.  The result was this.



As I was playing around with the camera zoom, I felt like juicing the idea a little bit more so I added these pit sections to the game.



Their design actually isnt done yet.  Its just a basic implementation, but Im leaning heavily on the idea of it being a mini arena that you need to kill the enemy down there to rejoin back to the main secitons.


Now that I had all of this camera business going on, there were going to be things on the horizon of the screen that I wanted players to be able to see, so I had to adjust my UI positioning for specific reasons. That was part of the reason I was asking for some feedback in one of my earlier updates.






Getting to the end

I was very on the fence for awhile about what the overall "win condition" of the null was.  I always wanted it to be a place you had to go into to further progress through the void.  However, I wasnt quite sure what to do about making the enemies something that you had to engage.  After I showed the game to a couple friends at different times, they all said "so you have to kill all the enemies to get out?" as a general question so that settled it for me.  Its a clear goal that most people can understand without me having to say anything.  Not the most original idea, but it works.

Upon clearing out all the enemies, some gooey glob stuff thing will drop in.  It doubles as a reward chest and the exit.  The ending and its animation are still a WIP.




TL;DR  I spent a lot of time designing this thing. I need feedback   Coffee
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic