Weekly Update - May 17th, 2019

Hey there Ghost Hunters!

Welcome to our Weekly Update!

This week, we are gonna take a behind the scenes look at the problems we have faced with our multiplayer server system from our recent alpha event, as well as lay out our plans for how we hope to solve/avoid these issues as we look forward to Alpha 3! (coming soon TM)

Despite all the time as energy the development team is putting forward into working on the next Alpha, I managed to have Kite come on board with us once again to break down not only how multiplayer support for a game like MIDNIGHT GHOST HUNT works, but how we plan to address our server issues moving forward!

Probably a haunted lamp.

Probably a haunted lamp.

Hello everyone! Your friendly neighborhood Kite here.

We have a lot of big things happening behind the scenes right now - and can’t wait to show it to everyone! This week I wanted to discuss the topic of multiplayer networking! A very fun and technical topic but I’ll try to break it down.

During our last alpha test in March/April, we were using Steamworks multiplayer support with player hosted matches. (These are often called “Listen Servers”).

This, in theory, is a really nice option for us indie developers because it essentially means it incurs no costs. One person in a match is acting as host and doing all the heavy lifting so to speak.

However, it’s a double edged sword. During the last alpha, there were a lot of issues that were directly related to players with older hardware and/or poor network connections hosting a match for 7 other players.

If you’re the host, your computer has to handle a lot of calculations and keeping all players in-sync. Some multiplayer games could totally handle this with low system requirements, since 4v4 is not a lot of people and our maps are pretty small. However, you may have noticed there’s a lot of physics going on in MGH! All possessable objects can get knocked around by any and all forces.

Most games do these physics calculations locally on the client - which is to say it may not match up exactly for all players. A chair getting knocked over might fall the other direction, for example, when comparing the results from two different players.

But in our game, the physics objects need to be in sync with all players. If a chair gets knocked over, it’s got to be knocked over very similarly for all players in the match, otherwise you’ll see chairs come to life and start moving that might be, on your screen, several feet away. Not so good.

So in MIDNIGHT GHOST HUNT, the server (host) calculates all the physics and sends “transform instructions” to all the other players in the match a few times a second. These instructions are then used to move the physics object in roughly the same way as it occurred on the server.

Bam, networked physics!

As you might expect, this can cause some serious slowdowns if the machine hosting can’t handle sending all that data, especially if someone is “haunting” in a room with a lot of props.

Also known as the Alpha 2 Lag Switch.

During our next alpha test, we’re planning on testing a new solution. We’re going to be setting up a fleet of dedicated servers that spin up and spin down depending on how many people matchmake.

Tea, anyone?

Tea, anyone?

When you start matchmaking, it will find a dedicated server region that is in the center of all 8 players so everyone has similarly low ping. Everyone should be on an even playing field, and nobody’s experience suffers because the host player happens to have a lag spike or hits 100% CPU usage and chokes out the game.

These dedicated servers will incur some cost on our side, but we love our community, and want to make sure everyone is able to have the best experience possible!

We plan to make player hosting still available as an option so you can play private matches with your friends. Other players won't be able to matchmake into those. We’re also looking into the possibility of player rented dedicated servers - nothing definitive here yet but we know a lot of other games offer something similar.

That’s it for now - stay tuned for more information and thank you all for being so patient while Team MGH works tirelessly to make this game awesome!

-Kite


As always before I sign off, I’d like to thank each and every one of you for following our progress as we work hard to deliver you a great game! We are so glad you are along this journey with us.


We are looking for Moderators! Do you have experience moderating Discord servers or Reddit communities? If so - please apply HERE!

That’s It for this week, Ghost hunters!

We hope you enjoyed this awesome and confusing look into how we are networking our game, and let’s all make sure to give Kite a pat on the back for his awesome write up!

Make sure to check out our post next week! Stay cool, Ghost Hunters.

Server_Social_Media_Topper.jpg

Weekly Update - May 10th, 2019

Hey there

Ghost Hunters!

Welcome to our latest Weekly Update!

This week, we figured we would take a trip down memory lane. A Flashback Friday, if you will.

Sure enough, the Ghostly spirits have decided to help us out by opening a portal for us to peer back into the development of MIDNIGHT GHOST HUNT!

Let’s talk with Kite, lead developer, a bit about how the game has evolved since the project started in late 2017!

Topper.jpg

Hey all! Kite here!

Thought it would be fun to look at some old screenshots I had lying around of the game’s early development.

For this Flashback Friday, I’m gonna focus on how I arrived at the “look” of the game. There might be some technical terms thrown about, but I hope to make it understandable!

Be warned, these are not pretty! This stuff is from when I was working on the project completely solo - and was still working in Hollywood by day. That is to say, I had no idea what I was doing.

One of our earliest challenges was finding the right visual style - what would the game look like?

By default, Unreal Engine uses a static lighting system that allows you to gain performance by baking lighting and shadows into texture information. Essentially, that means you can get realistic lighting (including bounced light, ambient occlusion) without killing your frames per second, because it only needs to calculate it once.

Building lighting was a pretty slow and painful process, as was optimizing every mesh to have enough lightmap UV resolution to make it not look awful. Though it usually still looked pretty bad.

EarlyLighting2.png
EarlyLighting.jpg

It was a little bit tricky to try to get the look I was going for - and it would seriously take hours to even see if I used the right settings. I was pretty new to UE4 at that point so I just chalk it up to inexperience really. There’s definitely ways to do baked lighting right, I just couldn’t hit it.

The worst problem was that contact shadows would get baked in — if you possessed and moved anything, the contact shadow would remain! That doesn’t really seem like a good idea when the whole point of this game is that almost everything in the level can be moved and thrown about.

So, I recklessly decided to just completely disable all the light baking and go fully dynamic.

DynamicLightingEarly.jpg

This started looking closer to what I had in mind - a dark, atmospheric haunted house vibe. This gives me greater control over creative choices on how to light a room. Also, don’t have to wait hours for the lighting to build anymore, so that’s a bonus!

However, this comes with a trade-off. Dynamic lighting is harder on your GPU.

I mostly solved this issue by ensuring most of my lights did not cast shadows, and restricted their range to the bare minimum. The only lights that actually cast shadows in the game are limited to the moonlight pouring in through the windows, the fireplace, and the Hunter’s flashlight.

MansionEarly.jpg

Those that played the alpha might recognize this location! At this point I was really starting to nail our look. Though with more of a sickly blue/green…

The gun visible there is actually the default Unreal Engine gun - not some new sci-fi Ghostcatcher! If you look up any UE4 tutorial on YouTube you’ll recognize it immediately.

Once we decided on this vibe, it was just a matter of adjusting the settings on our Post Process Volume to get exactly where I wanted to go. This was the fun part.

MansionFinal.jpg

This is the present day look. It could still evolve as we continue development! Perhaps in a future Flashback Friday we’ll continue down this path.

Cheers!

-Kite


Before we wrap up this week, we have a poll available HERE!

This poll is to gauge interest on new map ideas that have been thrown around in the community lately. This list will certainly help the developers decide which map ideas are most popular when they start working on new maps in the coming months.

THAT’S IT FOR THIS WEEK, GHOST HUNTERS!

We hope you enjoyed this weeks Flashback Friday, thanks so much to the devs for sharing all these great screenshots and showing us how the game has come so far!

Make sure to check out our post next week! Stay cool, Ghost Hunters.

Your Friend,
Poggers

Server_Social_Media_Topper.jpg

Weekly Update - May 3rd, 2019

Hey there

Ghost Hunters!

pic01.jpg

Welcome to the 2nd Weekly Update!

This week, we collected questions from our awesome community and presented them to the developers.

Although Kite and Birdm’n are super slammed working on the game and preparing for future tests, they managed to take some time and answer some of them!

Check it out, and let us know if you enjoy this kind of content and we may do another Q&A down the line!

Q: When did work on this game begin and what was the inspiration behind it?

Kite: Back in 2017, I was working in Hollywood on television VFX for awhile and got burned out. I’ve always loved games - though I wasn’t interested in working AAA and just end up burned out again.

I remembered games I used to play when I was in college - Garry’s Mod being my favorite. Chaotic funny moments with friends - that’s the recipe for a fun game! Prop Hunt was my favorite game mode, and I saw the potential there for a fresh take on the idea with enough twists to keep it interesting.

The twist is that it’s Hide and Seek at it’s core but the Hiders can fight back instead of just running away all the time. This changes up the dynamic quite a bit.

I was also considering how to theme the game for the core mechanics to make sense. Why are these things hiding inside lamps and chairs? What’s the context? It dawned on me that coloring it all with a Ghost theme worked - and let’s run with all the tropes!

In Oct 2017, I started learning Unreal Engine from YouTube and I started prototyping the idea out. And then, suddenly, here we are! Time flies.

Q: Were you expecting this project to even get close to this popular when you posted it on reddit?

Kite: Definitely not! Of course, you always hope for the best, but it was quite unexpected to hit the front page twice in a row. It’s been really awesome to get everyone’s reactions and ideas - it helps me know what people like about the concept so we can strive to deliver on it!

Q: When is the next alpha coming out?

Kite: Should be in the next 2 months - but not certain. We’ve got a lot on our plate right now and we want to wait until we’ve made enough forward progress to warrant another testing round. Trust us, it will be worth the wait!

I can’t wait really, it was such a blast to play with everyone last time and get their feedback first hand!

Q: What is the biggest thing that is gonna come out in the next test?

Kite: Excellent question! The latest work has been on updating several art assets, including a new Ghostcatcher design with really nice animations and effects. We’re starting to nail down the vibe and look of the game - so the game can be as cool as we want it to be!

We’ve also been working on a new networking backend system. The TLDR is that Steamworks P2P has a lot of issues. Namely, if the host happens to have poor internet connection and/or weaker hardware, all other 7 players connected will have a poor gameplay experience.

So we’re experimenting with a couple solutions, mostly incorporating a fleet of dedicated servers that spool up and down as players join in.

We’ve also made some performance gains on our GPU thread recently - excited to put it to the test and see how it runs on low-end hardware.

The next test may have a proper tutorial as well, but can’t promise it for certain.

Q: Whats the worst bug you’ve EVER had?

Birdm’n: Killcam was the trickiest thing we’ve implemented so far and was a never ending mess of bugs. The features we used to make the killcam work are still considered experimental in Unreal Engine, so we expected to run into issues there. We had so many crashes and other issues with killcams that I can’t even recall all of them. It took some serious work to get that feature to a playable state.

Ultimately, the worst kind of bug is one that we can’t reproduce in a testing environment and we’ve had a few of those. It’s always exciting when we can figure out how to reproduce one of the trickier ones and put it down. The only good bug is a dead bug.

Kite: This one:

Unauthorized doppelgangers!

Unauthorized doppelgangers!

Q: What was the biggest/hardest challenge you had to face while developing the game?

Kite: There’s been quite a few, really! Turns out making a multiplayer game is hard.

One that springs to mind was probably getting networked physics to work properly. Physics usually is calculated on each client and it may turn out differently on each one. But in this game, if you knock over a chair, it needs to be synced up properly to everyone else in the session.

There’s no off-the-shelf system in UE4 to do this - so I wrote my own system in Blueprints that works well enough. The server does all the physics calculations and sends out transformation instructions a few times a second. The clients receive this data and interpolates between the transformation “targets” received. The balance is to keep the updates as few as possible while having a nice smooth physics result that looks as though it was simulated locally.

And of course, our Killcam instant replay system. UE4 has no proper networked killcam system out of the box, though it does have an offline replay viewer system. So Birdm’n and I hacked together a solution to get it to work after many, many hours of blood, sweat, and ectoplasm.

We had to turn it off during the second weekend due to a rare crash - we may have this fixed for the next test but we’ll find out real quick if we didn’t.

Q: As someone who missed the Alpha but heard great things, how will you be informing people of upcoming alpha and beta opportunities? Is it safe to keep an eye on Reddit and Discord or is there a mailer I need to subscribe to?

Kite: Exactly! Keep an eye on Discord, Reddit, or any of our social media. We’ll ping people when there’s news. There is a mailing list too! Though we don’t rely on it primarily due to spam filters, etc.

Q: Would you say the game is more CPU or GPU based?

Kite: The game is generally more graphics intensive right now, with all of our fancy effects like volumetric fog and fully dynamic lighting. Though we’ve certainly got some CPU optimizations to do, too.

Depends on your hardware, overall. We’re hoping to launch with as low as a minimum spec as possible so anyone can enjoy the game.

Birdm’n: Right now the game is heavier on the GPU side, though we’re working hard to optimize both so that it’s more balanced and runs smoother.

Q: I code as a hobby, and I'm wondering if you have a funny anecdote about a seemingly easy-to-fix problem turning into a massive ordeal?

Kite: I’d say the Killcam system, yet again. Originally thought it would be done in a week, ended up taking months with a decent chunk of engine code editing. Not a lot of documentation online about this kind of thing - and technically not supported in the engine in the way we wanted it to work. What a battle!

But, we did end up getting it done and it is a rather nice addition to the game - to know how exactly that lamp hit you in the head.

Q: For those of us who greatly admire the work and dedication this dev group is putting into this project, how could your fellow programmers get involved in a project like this?

Kite: We may be expanding our team in the future, stay tuned on that!

If anyone is an Unreal Engine 4 Master with experience with multiplayer, you should DM me on Discord (MellowsoftKite#1111) or Twitter! (@NightGhostHunt)

In terms of the community, we’d like to have mod support - but uncertain if that will come with launch or post-launch.

Q: What are your plans with dedicated servers? Will folks be able to host custom servers/games at launch or in the future?

Kite: The current plan is that we’ll have a dedicated server fleet that people queue into. Player-hosted matches should also be supported in some form - dedicated and/or P2P player hosted as an option for players who want to play in a private match. We’re still exploring all options!

Q: Will there be custom map support? or mod support?

Kite: We’d love to have it! We may not have it on launch but it’s on our radar for sure. The game mode got its roots from modding and it would be a shame to ignore it completely.

Q: How far away from a finished game are we, roughly?

Kite: The core mechanics seem to be more or less locked. Now it’s polishing and making sure the experience is as good as possible for players. Don’t have a real estimate but we’re hoping the timeline is in months and not years. :)

Q: Will you be releasing a finished game or go through an EA/beta testing phase? If so, will there be the ability for content creators to broadcast the game during this time?

Kite: We’re currently not planning on doing an early access phase - though we will have beta tests, possibly concluding with an open beta before launch. None of this is locked in stone, however, and we’ll keep you posted!

Beta will most likely allow streaming / videos - we definitely want people to get the word out as soon as we’ve polished the game up and ensured the experience will be worth watching. :)

Q: Are you planning on adding microtransactions? And if so, what are you giving us to buy? Cosmetics only?

Kite: There is no set plan yet - but if we do implement microtransactions, it is pretty safe to say that it would be cosmetic only. Cool skins, emote animations, and so on. Pay to win is not fun for anyone!

Q: What are you eating for lunch?

Birdm’n: Seared pork ribs, a baked potato and some steamed veggies with a bit of lemon and butter.

team480.jpg

That's it for now, Ghost Hunters!

Remember to check in next week to see a preview of some awesome new art in development by the team. Cheers!

Server_Social_Media_Topper.jpg

Weekly Update - April 26th, 2019

Hey there Ghost Hunters!

My name is Poggers, and if you haven’t heard already, I’m the newly appointed Community Manager for MIDNIGHT GHOST HUNT!

This is my first post to the website since accepting the position, and I hope you will forgive me if it stinks!

This is our first of many weekly updates to come! In these updates, we are aiming to bring you juicy details about the game’s ongoing development, information about upcoming alpha/beta tests — and much more to come down the line!

320aAsylum.jpg

This week, we don’t have much to talk about YET!

Kite and Birdm’n are getting back from Easter holiday and they’re hard at work squashing all those dang bugs from the recent alpha test. The team is also developing new art assets and performance improvements for low end hardware.

We’re hoping the next test will run better for people in general, both on the network and frame rate side of things. More on that later!

Expect some previews on the new art assets in the coming weeks - there’s some cool new stuff getting cooked up as we speak.

If you haven’t noticed by now, anyone who requested a key from our Key Bot through Discord during the Alpha received the Alpha Tester vanity role! How do you all feel about the Alpha Tester role color? Please let us know how you feel in #off-topic in our Discord!

In other news, you may now opt in to a Newsletter role on our Discord! If you opt in, you will receive ping notifications when we have a new Weekly Update, server news, and much more! This role is completely optional, and is not required. You can opt-in to this role in the #rules-and-info channel on our official Discord.

We will still ping everyone for BIG news like another test or release date information, but this is a nice way to stay informed on the development as we continue onward!

If you’re not from our Discord and you’re reading this, you should totally join the community by clicking this link!

That’s all we have for you this week Ghost Hunters, stay tuned for the next Weekly Update where we are hoping to have some new juicy content to show off!

Follow us on Twitter! https://twitter.com/NightGhostHunt

Like us on Facebook! https://facebook.com/NightGhostHunt

Join our Discord! https://discord.gg/MidnightGhostHunt


We have been selected to receive an Unreal Dev Grant!

MIDNIGHT GHOST HUNT has been selected to receive an Unreal Dev Grant!

https://www.unrealengine.com/en-US/blog/epic-games-announces-1-million-in-unreal-dev-grants

Big thanks to our friends over at Epic Games.

This grant will help this one-man team grow a little bit bigger, add more features, and overall make the game better.

We've also opened up a Discord server where you can interact with the dev(s), ask questions, and just talk to other cool people. Check it out!
https://discord.gg/MidnightGhostHunt

If you'd like to sign up for a chance to get into any alpha/beta tests planned for later this year, feel free to sign up here:
http://eepurl.com/dy11A9
(make sure to read our Privacy Policy first!)

And last but not least, follow us on Twitter to get updates and new exciting announcements coming up shortly:
https://twitter.com/NightGhostHunt

Thanks a bunch, and we'll see you on the Hunt!
-Kite