Don't wanna be here? Send us removal request.
Photo
The ghosts’ placeholder art has finally been replaced by an actual 3D model, and a dynamic camera has been added to NPC interactions! Onto some UI work this week
#screenshotsaturday#Screenshot Saturday#Game Dev Blog#game dev#indie#indie dev#gamedev#indiedev#low poly#unity3D
7 notes
·
View notes
Video
tumblr
Finally getting around to replacing some of the placeholder art with actual models, all the while fleshing out the NPCs a little bit to make the interactions feel more engaging. NPCs will now look at you when you are nearby, will animate to turn to face you, and have mouth animations that are linked to the text scrolling in the dialogue window.
Another cool thing: If you look back on previous posts where you might have been able to see the fading transition between rooms, the transition was not great before. My shader actually uses two passes to be able to render the light from the sunlight, and then the lights from the point/spot lights. Because of this, I was having to resort to some weird additive blending to do a mock transparency on the fade, because unity doesn’t draw shadows on actual transparent objects. Well I finally figured out a method to get the kind of fade that I want, all because I was trying to figure out how to get the NPC to fade as it went down the stairs. Kind of goes to show that sometimes you have to just leave certain problems for later, and eventually the solution might come in pretty unexpected ways.
5 notes
·
View notes
Video
tumblr
So uh
We’re fully in 3D now
As much as I was digging the 2.5D aesthetic, animating the sprites was beginning to look like it was going to wind up limiting the gameplay in a way I wasn’t happy with, so I decided to just jump right in and try to model the character.
I wasn’t sure if I was going to be too happy with it, because initially I hadn’t really worked out how I was going to do the face animations, so the model basically just looked like a lifeless shell, and despite the fact that the walking animation was technically more animated than the 2D 4-frame animation I had before, something about it being in 3D made the non-reactiveness to the environment feel that much stiffer.
One way I figured I could alleviate the stiffness is by adding a point-of-interest system, where the character will turn their head to face nearby interactable objects.
And now that I’ve added the face and the blinking animations, I’m feeling much more confident about going forward in this style.
On top of all this, I can just parent tools/weapons/equipables to the animation bones of the character, as seen in this MUCH improved implementation of the hand mirror:
Found you, you creepy lil ghost
-Lyon
20 notes
·
View notes
Video
Posted this to the wrong blog again, ah well, oops, here it is
tumblr
The orthographic camera mode was not cutting it for the hand mirror. In orthographic view, for those unfamiliar, an object’s distance from the camera does not impact its size. That is to sense, there is no sense of perspective. This meant, while the hand mirror was able to spot the ghost and zoom in on it, it didn’t do much to inform the player of where the ghost actually was, and instead just gave a super weird close-up of its face.
Compare the video above to the same thing in orthographic view, as it was before
Baaaasically useless, right?
Usually orthographic is great for anything that uses pixel art because you don’t have to worry about the sprites being warped by perspective. HOWEVER, everything is so close here, and the view is so restrictive, that I think I can get away with using a perspective camera.
Honestly, this is probably my favorite change to come to the game yet, it makes the environments feel cozy af compared to the orthographic view imo
-Lyon
7 notes
·
View notes
Video
tumblr
Prototyped a system for equipping tools/weapons to be used in the game, and the first item I've included is a hand mirror. Mirrors help betray the location of the ghosts that haunt your dreams, and make them interactable, but what can you do when there's a ghost in a room without mirrors? Why, use the hand mirror of course! When it's held outstetched, raycasts are sent out to check for ghosts, if one is hit, the camera zips around to the reflective side of the mirror so the player can see where the ghost is located.
5 notes
·
View notes
Video
tumblr
Added the dream journal today! The dream journal will provide a way for players to keep track of their progress and what events they've witnessed in their dreams. All I have left to do is figure out a nice way to draw things dynamically to the pages.
2 notes
·
View notes
Video
tumblr
Stream recap from today!
Aside from adding a few new assets (there is now an actual bed in the master bedroom!), there is now a new ghost haunting the dream world, which can be found hiding around the full-length mirror closet in the master bedroom
Spoooky
2 notes
·
View notes
Photo
Spent a lot more time working on the NPC movement and schedule system. For anyone who may have missed the last post, the NPC’s in this game move around the world on schedules, like a rail system relative to the in-game time, much like in games like Majora’s Mask.
This creates a further layer of complexity to the game’s architecture because there needs to be an independent controller that keeps track of where and when each NPC is in the world, and then loads them into memory at the appropriate point in their path when the appropriate room is loaded into memory.
There was a whole mess of debugging to do to make sure this worked properly. What happens when you load a room mid-path? What happens if you load a room AFTER a path is done? What happens if you unload a room from memory after the NPC has been put into it? What happens if you save a game and load it in a room where an NPC is traveling? How do you keep the sprite aesthetically consistent and ignore the room’s fade-in if it’s doing its own fade-in/out? How do you get the NPC to change their schedule based on user input?
All of those questions, but ESPECIALLY that last one, resulted in my having to almost completely re-engineer the system to be able to handle all of these scenarios. Most of these questions had been addressed in the original design, but it was the implementation of a feature that allows the schedule to change that wound up breaking how a lot of everything else worked.
The NPC dialogue is also intrinsically linked to their schedule, and to create less robotic-feeling NPC’s, the ability for dialogue to change dynamically was very important for all of this. As seen above, a second dialogue node replaces the dialogue node from the first gif once it has already been said.
In this schedule, if you hadn’t spoken to the mom (again, as represented by this placeholder sprite here) before she finished her path, you would be greeted with a “good morning“, but since we already spoke to her, she jumps right to the next node in the dialogue tree.
If you ask to borrow the car, she will head off to the front door once 8:30 hits in-game, in order to catch a bus to work
If you do not ask to borrow the car, she will head to the garage to take the car to work and it will be unavailable to you for the day.
A quick word about that: since the game is so heavily based around time, I am imagining the car as a fast-travel of sorts that would allow you to interact with things and characters that are out early enough that you would miss them if you tried walking to them in the morning. Of course, alternatively, you COULD wake up earlier, and walk the extra mile, or drink a bunch of coffee to pull an all-nighter. This is the kind of game where there will be more than one way to approach most things, and hopefully it will be interesting to see how peoples’ play-throughs differ.
This is a pretty big feature update, so I’ve decided to post a demo of it for pledgers to try out over on my patreon page
Thanks for reading!
-Lyon
#Screenshot Saturday#Game Dev Blog#game development#game dev#gamedev#indie#indie dev#indiedev#devlog#dev blog#low poly#pixel art
3 notes
·
View notes
Video
tumblr
NPC's during the waking sequences move about the world on their own schedule. When you decide to sleep will impact which characters you can interact with during the waking sequences. For instance, if you stayed up late and didn't set your alarm, you'd sleep in and miss interacting with your mother (represented by a placeholder sprite here) before she heads off to work. Maybe if you ask her nicely before she heads off, she'll let you borrow the car... Still have some fine tuning to do on this, to fix little things like the potential to pass through open doors as NPCs walk through them, but the core functionality is there now.
10 notes
·
View notes
Video
tumblr
Here’s a recap of some of the stuff that was finished in today’s stream!
Aside from some minor glitches related to the item menu that were fixed (Items not displaying in inventory when there was only one of them, but only when multiple items are in inventory, and animation coroutines behaving badly when exiting the item menu), today was mostly about texturing.
The kitchen with the exception of the fridge has all been textured. In finishing up the kitchen, I UNFORTUNATELY decided I had made the house WAY too big. There was just too much empty space and I had no idea how I was going to fill it. So I wound up resizing the living room/kitchen space, which meant that for the sake of consistency, I had to resize the bedrooms upstairs as well, which is fine, because they were honestly way too big as well.
Honestly a way more appropriate size for the bedroom considering there’s only a handful of elements I have left to add to this room, including a desk, some shelves maybe and then some decorations to make it more lived in.
Here’s a much older screenshot for comparison’s sake
THIS of course meant that I had to completely re-texture most of the rooms in the game however, as the new size meant new UV maps. Also, the shadow casters used to block the sunlight from anything but the windows had to be resized to match, which was especially a pain on the main floor because a lot of windows wound up moving and changing shape. Oops! Going forward I’m going to be much more diligent about planning layouts out before jumping into the environment modeling (who am I kidding, no I’m not).
1 note
·
View note
Video
tumblr
I’ve been streaming some of the game development process over on twitch, I think I’m going to be at it pretty much all week, so if you wanted to check that out, subscribe to http://twitch.tv/lyonbeckers so you get notified when I go live.
Here’s a short video to showcase some of the stuff I managed to get done in the stream today, including modeling for kitchen furniture, some programming for objects in the kitchen, including animations for the fridge and sliding doors.
#game development#Game Dev Blog#game dev#gamedev#indie games#indie developer#indie dev#indiedev#Unity3D#unity#madewithunity#low poly#pixel art
2 notes
·
View notes
Photo
The sprites clipping is an issue I’ve been meaning to tackle for a while now. I’ve gone through a couple different iterations of strategies for displaying the sprites, but they’ve all relied on the sprite being at a constant angle facing the camera, like so:
Of course at an angle, it’s very easy for the sprite to just go right through walls. Some games avoid this issue altogether by having the collision detection extend out far enough, or having the sprites small enough to fit in a smaller collision area. This was not a design choice I had made, and a collision area large enough would seriously impact mobility with such a steep angle on such a large sprite. I had been trying to make use of the sprite shader’s offset property to force the sprite to render after walls, but if I took the offset far enough so as to draw the whole head above the wall, I’d get diminishing returns and the feet would start rendering above foreground elements(as seen in the first photo), and if I lowered it to a point where that didn’t happen, a portion of the head would still clip at direct angles (as seen in photo 2).
I wondered if I could figure out a way I could have the sprite render perfectly vertically, but with a transformation applied to it to create a false sense of perspective, so that the sprite would not appear squashed.
I decided to scrap everything I had in place for billboarding, which up until now was an attached C# component which just rotated towards the camera, and instead look into rotating from the shader code. I managed to hack together a sort of frankenstein formula for resizing the sprite relative to the model view matrix, but if anyone here is good with geometry, they should hit me up because it’s definitely imperfect (the effect stops working at too steep of an angle), but it works for my use here.
I added this little bit of code to unity's default sprite diffuse shader:
void vert (inout appdata_full v, out Input o) { UNITY_INITIALIZE_OUTPUT(Input, o); float3 forward = normalize(UNITY_MATRIX_V._m20_m21_m22); float3 up = normalize(UNITY_MATRIX_MVP._m10_m11_m12); float3 upXZ = up; upXZ.y = 0; float3 right = normalize(UNITY_MATRIX_V._m00_m01_m02); float4x4 rotationMatrix = float4x4(right, 0, //use the magnitude of the normalized Model View Projection matrix, plus the length between the magnitude between the X and Z values in the MVP, divided by pi float3(0, length(up) + length(upXZ)/3.14159265359, 0), 0, forward, 0, 0, 0, 0, 1); v.vertex = mul(v.vertex, rotationMatrix); v.normal = mul(v.normal, rotationMatrix); #if defined(PIXELSNAP_ON) v.vertex = UnityPixelSnap (v.vertex); #endif o.color = v.color * _Color; }
And it works! No more clipping, and no squashed sprite! And ideally, this is a more efficient solution for billboarding anyway, as it doesn’t require all those C# scripts
As an added bonus, it makes the mirrors work so much better, since the sprites are just now rotated through the render pipeline, they’ll never appear with a warped perspective, and support the same for multiple mirrors
Woah who’s that creepin behind you
#game development#gamedev#indiedev#devlog#Game Dev Blog#game developers#pixel art#2.5d#low poly#shaders#sprites
23 notes
·
View notes
Video
It is late and I am tired so I posted this to the wrong blog so uhh here you go!
tumblr
Some big additions to the game to share here.
I’m very excited to post this video because it means the resolution of an angles problem I have been having for about 3 days now. I am… not good at geometry, to put it lightly, and I was having a hell of a time writing an animation function that would rotate the camera around a target pivot point on both the X axis and Y axis.
Another addition is of course the mirror, which initially caused some problems
Basically the mirror camera made it painfully obvious that the sprite was nothing but a ruse in 3D space.
I was able to solve this by adding a child object to the player which shares the same sprites, but does not rotate on the X axis to face the camera. The sprite animation script I wrote was accidentally pretty well suited for this too because I was able to just write a little script that just tells the animation controller that the child sprite should be facing the opposite direction, and copied the animation variables (like frame and current animation) to the child controller.
Other low-key things, I made the doors into see-through objects if the character is blocked by them because it was getting pretty cramped in this little bathroom when the doors obstruct half the view
This all seems so ludicrous to spend so much time working on, but I promise, these are actually things that are going to play into the mechanics of the game
Well except maybe this
34 notes
·
View notes
Video
tumblr
Adding very important features to the game today
1 note
·
View note
Video
tumblr
Here’s a video of some of the progress I’ve made on pathfinding and enemy AI. I posted a few more demos of the behavior on twitter, idk if I can post multiple videos to a post here, so check that out here instead.
5 notes
·
View notes
Video
tumblr
To complement the previous video, here’s some footage demonstrating how the directional light for the day/night cycle persists through each area in the game
1 note
·
View note
Video
tumblr
Worked a little bit more on the day/night cycle, including lighting transitions and rotation of the directional light
Here’s a video of the cycle sped up 30x. It stays dark for a bit until sunrise, fades to a red ambient color for dawn, then daylight, etc etc. Actual day/night will take about a half hour, which might be changed depending how gameplay goes
3 notes
·
View notes