🤑 Indie game store🙌 Free games😂 Fun games😨 Horror games
👷 Game development🎨 Assets📚 Comics
🎉 Sales🎁 Bundles

Project Night

A topic by SubMatterMatt created 255 days ago Views: 1,149 Replies: 25
Viewing posts 1 to 24
(Edited 2 times)

Hey all, I'm starting this post to keep a running 'dev log' of my jam game Project Night (terrible name that I'll change later). Here are some general notes on my thoughts and how my Day 1 went.

What is Project Night?

Project Night is going to be a top down 2D horror adventure game built in Unity. Ever since I started game dev I wanted to build a game that told a story yet I always seem to build 'arcade' style projects. That fact along with my forever obsession with horror video games (the good ones mind you) and my more recent interest in pixel art makes this the perfect setup for me. The game will hopefully feature a story told more with the surrounding objects and atmosphere, giving the players a general sense of the plot but allowing them to 'fill in the blanks'. If time permits I may consider adding puzzles as well.

What is the Goal?

Well obviously finish the game in time! But more specifically, my idea is that the player will investigate an area and as they continue forward the game becomes more hellish and terrifying in atmosphere (ala Silent Hill). Even more specifically, the general direction the player will travel is 'downwards', kind of playing on the notion that the player is heading into 'hell', although that's more playing on player psyche and not specific to the game plot.

Day 1 Progress

Day 1 was unique in that I had started this project only just before finding the jam with the intent of building this game in a month, so I didn't start thinking about it until the afternoon and only giving me a few hours to conceptualize the project and jump right in. I started by installing 'Home' by Benjamin Rivers since I knew that had an aesthetic similar to what I envisioned (thought Lone Survivor and several other games would work). I looked at the pixel counts for the player (about 32x32) and analyzed how the flashlight works (3-4 pixelated circles that animated getting larger and smaller) and how the screen noise works (again just 3-4 pixelated images animating over time). Armed with that info I mimicked those effects and created a character with a basic down animation (started a base for the up walk):


Then I worked on setting up everything in Unity which included animations, player input, lighting, game state controllers, etc. Additionally, I added a bed sprite and the code for the 'interact' mechanic which allows the player to walk up to objects, press a button, and get some text printed to the screen. It supports multiple text fragments so it's a relatively dynamic component and the first time I ever coded a prompt like that:

I conceptualized some other features so implementation of that will be my plans Day 2 :D Onward!

Day 2 Progress

I intended to do a bit more feature coding work today but started getting wrapped up in player animations. The main character is probably the most complex animated thing in this game and is the center of what the player see's the most, so spending extra time cleaning up art and creating the animation base isn't a bad thing. First up I added some new sprites and modified the existing ones a bit. The 'Down' and 'Up walks work fully and their timings were tweaked so the player doesn't look like they're sliding. Placeholders were started for left/right and a new idle look around was added spur of the moment when inspiration struck during the drawing of the side animations:


Code was added to support input for the left/right movement and A LOT of time was spent getting those idle looks to work right. They're tossed in at random intervals and look pretty cool, if this were a full game I'd probably do them for the Up/Left/Right walks too (maybe I will later). Right now the Animation window is a bit of a mess but it works well (except for one little bug that isn't a big deal during the look animation exit transition):


Note, even though I use the name 'Chris' it was just a quick placeholder. I intended to make the character sprite somewhat gender "neutral" so the player didn't focus on it and just focused on what the character was going through.

That's pretty much it for today, doesn't seem like a lot but definitely some quality additions. Once I draw the animations for left/right and hook them into place the player movement should be pretty well completed. And since this is a game about walking around investigating I'd say that's a pretty great thing. Onward!

Hey Matt, nice post! Quick question: are you thinking of adding a "bob" to the character's walk cycle? (i.e. on the frame when both feet are on the ground, the character is one pixel taller.) Even though this is a top-down game, I think it adds a lot to a walk animation.

That's a great idea! I'll definitely play with that tonight. In those frames from Day 2 if you look at Row 2 Columns 2/3 you can see the top of the head is more square which almost gives that same effect. Now that you mention the 'bob', I can see that's why that 'Up' animation seems so much better when I run it than the 'Down' (first row) animation.

Day 3 Progress

Since I have a non-game dev job my time spent on the project is limited a bunch on the weekdays, but that doesn't mean I haven't made any progress. First up, the finished (for now) main player sprite with Left/Right animations. I added Benjamin's little trick mentioned above regarding making the actual sprite a bit smaller during the walk cycle (though looking at Home it might be opposite, getting larger as the character steps):

Once that was all done the engine just worked since I had it all hooked up before finishing the sprites, I just had to update the animations in Unity. That lead to the next necessary fix which was to update the transform movement call. Initially I was using a Transform.Translate function which causes some jittery issues when walking against a collider so I updated this to be physics based using force.

Finally I did one more little art test by making a night stand with a lamp on it:

Combined with a point light and the flickering 'light aura' gives it a neat little look when it appears from off screen:

A 'stretch feature' of this lamp would be to allow the player to turn off the light with the interact key rather than prompting them with a box; not a difficult thing to add at all but I just haven't done it yet. Also bumped up the general ambient light a little so it isn't pitch black on the edges of the screen, might up it a bit more.

One thing I am going to need to consider going forward is the perspective combined with the colliders on objects. Since something like the Bed sits on one layer the Player can either be in front or behind, but not dynamically either based on position without a bunch of code (for example if you walk to the bottom of the Bed the Player head covers it, but with that same layer the Player feet cover the top of the the bed). Another possible solution would be to split the bed into 2 sprites and layer them appropriately, but that might end up getting messy with placement in Unity since I'm not using a grid snap. Onward!

Day 4 Progress

Today was a lot of little bits of art, and being primarily a programmer, means a lot of trial and error. First I created a few new objects, an alarm clock for the bedroom (important to the start of the game):


And a couch, rug, and standing lamp for the living room:


Also if you look at the bedroom picture you'll notice the ground is different in there, carpet! In fact I started doing a lot of the overall house layout including putting it in engine and adding colliders for the walls:


I'm not super happy with the look of it but it's got a bit of a creepy feel to it and I'm just trying to get content pushed out right now if I want to get to the later parts of this game. Walking around is kind of cool in there so it's not too bad, just bare. The biggest issue with that image is that the perspective is a bit weird when it comes to the walls being at an angle, so I attempted adding windows and it just wasn't working out. Perspective is absolutely my biggest hurdle with art considering my objects (couch, bed) are nearly a front/top angle, and the house is from a combination of a top/side. At least I'm practicing though right?!

Onward!

Day 6 Progress

I took Day 5 off to do some housework and take a one night break. Also since I'm recording the podcast tonight I won't have a ton more time to work on it this evening. Day 6 added more art and a spontaneous little change that might be an interesting gameplay mechanic. First, some more art, in the form of art... for the house walls:


Thinking back to a few days ago I mentioned being able to turn on/off the lights in the game. This was an easy script to add just hook up a new component that turns off the light and the light ring object and voila, interactive lights:


Notice in that screen how the right side is in a bluish hue, which is the final little feature. Most horror games let you turn off the flashlight so I figured why not (even though in most games it is a useless 'mechanic'):


However it might add to some more interesting gameplay other than just exploration. Since I don't really want to add combat this might be a unique mechanic to add to puzzles or even stealth gameplay (though I've played my fair share of unfair stealth based horror games so I'm not sure I like that usage). What about a glow stick or something the player could drop and it was timed? Or objects appearing only under the use of certain bulbs?? Oh the possibilities with something as simple as light! (Project Night Light!!) Onward!

Host

Awesome progress Matt and great to see you providing such a detailed account of your process! Its good for reflection. When I get a few mins I'll have a proper read! keep up the awesome #30daydev; you're certainly harnessing it! =D

Thanks! And no worries about reading it all, a quick scroll through the screenshots should give a decent idea of what's going on :)

(Edited 1 time)

Day 7 Progress

Another day with what seems like minor progress but game jams also should be balanced with life right? This morning I did some scripting to create trigger volumes that bring up the text prompt window:


These are pretty simple to code and should be useful for scripting story as the player progresses. What took more time with this is the fact that previously these prompts only supported displaying one prompt of text at a time before closing the window, however that is now fixed so multiple lines can be printed in succession easily:


Additionally a bit more work was done to the house art and some of the items you can inspect were given basic descriptions:


Tomorrow should be a more calm day outside of game dev so hopefully I'll have some more time to dedicate to the jam. I'm toying with the idea of starting the 'horror world' art soon so I at least have some of that started and implemented. Obviously there is a LOT of work that could go into just this house part but I know that deadline is going to appear a lot sooner than I would like it to :) Onward!

Day 9 Progress

Missed another day yesterday as I spent it doing a lot of housework, however tonight's work is something I'm really proud of and I think makes up for missed time. As I mentioned previously I want to shift gears into building more of the 'horror' bits of the game particularly with art. I knew I wanted a rusty chainlink type floor for the first 'otherworld' section so I started by making two simple chain patterns:


The square platform is just a large pattern colored grey with the small pattern under it colored a tan/brown. The upper right is the simple small pattern used behind the large grey pattern, as well as being recolored and used as a walkway on the bottom of the platform. As I was drawing this I had a bit of inspiration for a new mechanic that I don't want to do into too much detail about quite yet, but those platforms are important to this section so they needed a different color scheme to stand out a little.

I took those patterns and built a quick 'map' of the section using combinations of the platforms and the walkways. For each platform I blended the platform and walkway by extending the orange links into the grey platform, extending the grey links into the orange walkways, curving their 'frames', and blended them to look like the rust is 'taking over' the platforms. Next I thought of the new mechanic and adjusted the level as needed by destroying some of the walkways (erasing chunks and transforming them). Finally, I added some simple posts so it looks like something is holding up the platforms. Long description of the process because I only have the resulting otherworld map:


And finally, in the engine I added some quick orange lighting to give it a little bit more of a 'creepy' vibe. It actually looks pretty good!


Like I said before, for a non-artist, I'm pretty happy with how this turned out, especially considering a lot of it was just experimentation. There are a few major things to build in this section yet: another lower 'floor' of rooms, level collision boundaries, the actual working mechanic, etc. But it's a good start!

I've also got the start of the game in my head but I want to put that off for right now so I don't have to go through that every time I run the game. There are a lot of little considerations for showing the player the mechanics and controls organically through usage rather than a big screen with all the controls listed on it (which I probably should have anyways).

Onward!

Day 10 Progress

Today was more art on the first Otherworld section. This section contains an upper and a lower level in a bit of a puzzle formation so most of the time was spent creating the bottom area:


Other than some basic tweaks and possibly some additional shading or coloring the rest of the work will be in Unity making everything work. Here's a quick shot of the full thing in Unity:


A lot of work will go into making this section work and look better in the engine but that's expected, especially considering there's a new gameplay mechanic to add here. If I can get nothing more than this section finished I will consider this jam a success :) Onward!

Day 11 Progress

Today was all about adding the new mechanic, so lets talk about that. Remember earlier when I said there should be a better reason for the player to turn off their flashlight in a horror game? Well in Project Nightlight, turning off the flashlight in specified zones (phase zones) allows the character to 'phase' through some object as if he were ethereal himself! In this first dungeon area, the player phases through the chain flooring and is able to get past broken pathways by phasing into rooms below and continuing forward. Here's a screenshot of the phase zone:


And when the player turns off the flashlight on the zone they phase 'under' the grates, shown in the next sample:


In total there are quite a few zones in the first Otherworld section. It's kind of a mix of a puzzle and just a tutorial because there isn't anything to 'figure out' except the basic use of the mechanic. Though I could definitely see this being used in some interesting spots going forward where the player could phase through other objects instead of just this fence (this whole area could be expanded on to make a truly interesting puzzle):


And finally, one other thing I used that was new to my development were polygonal 2D colliders for walls. There may be a better, more efficient way of doing walls like these but I saw someone use this in a recent video and wanted to try it (side note, it crashed Unity the first time I added the component!):


So there is one more 'mechanic' I'd like to add to this area as well as adjust the lighting because it's obviously quite dark in general and while I like darkness in horror games I don't like complete pitch black (it's fine for me as I play it but I bet it would be too dark for even most horror players). Additionally the rooms don't have wall colliders yet so I'll need to take some time and do those. Onward!

Day 12 Progress

Over lunch today I created some new art in typical 'Silent Hill manner' by creating a rusty box fan:


Rather than animate this by hand I decided to export the box and the blade separate and animate them using a script to rotate the fan at a random speed, random direction (left/right), and with a random starting position. I like to think having several differing fans of different sizes and moving at different speeds is a little unsettling but maybe I'm reading into it too much (but why do they move at different speeds?!?!) Here's an image of the fans placed randomly around the Otherworld dungeon:


And a (somewhat poor) screenshot of them in the game:


Finally the other major addition today was the interaction prompts. These are basic screen prompts that tell the player what button to press to do certain actions in the game. Traditionally I might prefer the player to learn the command and then have them apply it themselves rather than saying 'Hey this is where you can do a thing', but with the short playtime of this game I think it's too much to assume the player will just know the controls after one use in a 5 minute play-through (but I still maintain that I will introduce the buttons as organically as I can!!)


There is one known bug with this prompt yet but I'll work on that tomorrow. I also did a few different bug fixes today; one main bug around Unity setting an incorrect default importer setting causing some of the art to get a weird color gradient randomly strewn throughout. I still need to add the colliders for the bottom floor of the Otherworld, and there is still that other mechanic looming on the horizon. Onward!

(Edited 1 time)

Day 13 Progress

Today I went and saw Star Wars: Rogue One with friends so I only had limited time to work on the game but with a bit over lunch and some time after the movie I was able to add the 'enemy' of the game, which I call 'Lumpy':


Surprisingly, after drawing that and putting it in the engine the animation really didn't need any tweaks and it looks actually coherently done! Success! The first time the player is introduced to Lumpy I wanted it to be a little spookier so of course I added some blood that I made by drawing a pattern and then doing different smudges and blurs to get the following little spots:


And put together in the engine using two blood spots and Lumpy is actually kind of neat. His animation is a mix of like a breathing animation and a quick twitch, and I wrote a script to randomize each time that happens so he isn't always just repeating at the same intervals:


However it gets really cool with a little experimentation. There are going to be Lumpy monsters in the Otherworld but I wanted to see what scaling it way larger would look like and it actually looks like huge tentacles laying in wait and periodically twitching!


This is the 'core' monster in the game and I'm surprised I got it in that quickly. There are some other ideas I have for monsters but we'll see if I get to them. Lumpy is the basis for the one remaining 'mechanic' so once I add that all that's really left is to string together all the story bits so things fire at the right times and make it a bit more interesting. Plus lets not forget all the audio that will need to be done; but I have some cool ideas for that. ;) Onward!

Day 14 & 15 Progress

This update will contain the last two days which only had a few new things. Yesterday was spent almost exclusively on implementing the 'anxiety' UI that pulsates a sprite between two colors using Lerp, along with fading in and out when nearing a Lumpy (based on a trigger). I'm not great with the Lerp usage so a lot of the time coding was fixing issues with that, but in the end the code turned out relatively clean and it seems to work quite well:


Most people will thing it's a damage UI element but the player can't ever die in this game so it's really more to express the character's anxiety as they get closer to Lumpy's.

I also had the idea to transform the main house into an Otherworld area as well so today was a lot of art spent on doing that, the following isn't finished but is pretty close to what it will look like in the end:


Along with the rest of the Otherworld the new Otherworld map looks like this in the editor:


Additionally I changed the main house a little by removing the left side walls that were giving it a weird perspective in my opinion so now it's a bit more of a standard full top view. I also added a bunch of shadows into the drawing to give it a little bit more of a horror feel and to just in general make it a little less 'static':


Last night I had an idea for a new monster that I would really like to add in, however with the new Otherworld Home I have a new area to add level boundary colliders and I still haven't done the 'lower level' colliders in the Otherworld. Not to mention all the interaction and story flavor text that has yet to be done, and the sounds! So much left and so little time! Onward!

Day 16 Progress

Things are getting weird...


Onward!

Day 17 Progress

Today was a lot of working on working out the kinks of the different game systems working together along with some level editing. First off, the Otherworld version of the Home now has a level collider:


And I redid the Home itself to use a single polygon collider instead of the numerous box colliders I was using before:


I started adding some of the story triggers that will spawn different things and do different actions as the player progresses. The first two of these are to spawn the worm from the previous post and another trigger that transitions the home to the Otherworld. You can see a video of that on my Twitter post here: https://twitter.com/matchristian/status/824073637326098434

And finally I started adding a basic Pause menu. While I had game state management in the code this whole time I really only used it for 'in game' actions so part of adding the Pause menu was a lot of restricting certain things that were allowed to update and run no matter what the current state of the game was:


Eventually there will probably be more on this screen, for now I'm going to leave it basic with maybe an option to exit the game if the user hits Enter or something. I don't think it's necessary to add a full fledged menu with selectable options here, really with this short of a game it's more of a little polish thing to have a pause menu. Onward!

Day 18 Progress

Being a little lazy tonight so no new images but I'll just do a quick overview of what's been worked on:

  • Added the ending area (art and colliders)
  • Added colliders to the bottom level of the Otherworld maze
  • Tweaked a number of descriptions
  • Started creating the Title screen (no functionality yet)

My main goal next is going to be animating the worm and getting it to move out of the way after the transition of the Otherworld is complete. Shouldn't be a big deal other than the time it takes to draw the animation. After that the big push will be audio. Then polish tweaks. Then release. Onward!

Days 19-21 Progress

Even though I have been a bit silent here lately I still have been making game updates to Night Light. Similar to the last update there isn't much to show without just giving away the entire game and it's a lot of small fixes and polish items. Little things like fading lights, fading images, tweaking the game to feel a little better, etc. This is all extremely important but difficult to show especially since I'm only planning on making one video on this at the end of development. Here are some of the latest additions:

  • Title screen is fully functional
  • Game is finally fully playable from start to finish
  • Intro and ending cut-scenes are started (not complete)

Still need to do the Worm art although the code is all set for it and I just need to do a few frames of art. The only remaining part is the audio which I still have a lot of ideas around, it's just a matter of being around my recording equipment and bulk recording various sounds. Not too worried about the whole process of completing but I will definitely want to leave a few days for building, short play testing, and release. Onward!

Some details on the development of this item in fun filled video form:



Another day and another new vlog format for an update. I really like this even though it adds a small overhead each day. I go through some of how I setup certain things in the code in this one which makes me think vlog style tutorials (very informal) would be a very cool idea. The end is in sight!! Onward!



Yesterday's vlog is now live. Going over a bunch of final audio additions, cutscenes, and remaining polish:




Release day!! Download Night Light here: https://submattermatt.itch.io/night-light

Let me know what you think if you get a chance to play it!

Yesterday's vlog talks about finishing the game and post-jam thoughts:


Additionally, a YouTuber named SoulBarrier covered the game in a video and watching his reactions were priceless to me!! Holy crap, someone played my game!!


SoulBarrier noticed a major issue in the code related to the text descriptions though. Basically the function typing the description was ending early and not typing out it's final iteration. I'll discuss it more in today's vlog but I fixed the issue and pushed out a new build. Even though it's a jam game doesn't mean it isn't a candidate for post-launch patches ;)

I'll continue posting here until the vlogs aren't about the game anymore, probably a few more times, so... Onward!

One more vlog, this one reacting to Soulbarrier's video and discussing the bug in detail before fixing it!


Onward