Nov 19, 2018
One Hour One Life - jasonrohrer


Jungle Flora:

Wow, what a week! Steam, of course, had the expected effect: an absolute flood of new players, and the resulting chaos.



This is the first weekly update post-Steam, and as you can tell, it's a bit later than usual. And the release of the update, for any of you playing on Sunday evening when it came out, was quite a bit bumpier than usual. I'll explain more about that in a bit, but first, the update itself.

As you can see from the GIF, there's a brand new biome, the first new one in a while. If you spend some time there, you'll find that it has a pretty good balance between benefits and drawbacks, though that balance will be tweaked over time. It also contains raw ingredients that will help you push transportation tech into even more efficient and durable realms.

Beyond the new content, the biggest change client-side is that the crafting hint filter system has been overhauled to align better with people's expectations. In general, the crafting hint system shows you hints for what you can do with what you are holding, or what you just touched. It does not show you specifically how to make an end product, but steps along the way that you might want to explore. The filter system (/hatchet) is meant to cull down the list for what you are holding to show you only steps along thew way that lead to a hatchet.

First, an easy fix. The old filter system would show you any steps along the way AND anything you could do with the hatchet once you got it. This isn't very helpful---you're only filtering by /hatchet because you don't have one yet. Who cares what you can do with it? So those are hidden now, when filtering.

One point of confusion: What happens when a hatchet itself can be used to make some of the end-products for a hatchet? This may not be true for a hatchet, but it's true for an axe, which requires kindling to make, but can also make kindling. Still, it's best not to show this when filtering for /axe. There have to be other ways to make kindling, after all, because you don't have the axe yet.

Finally, what happens when none of the steps for what you're holding are relevant to /hatchet? Let's say you grab a piece of flint. In the old system, the full, unfiltered list for flint would be shown, and "NONE RELEVANT" would be shown next to the filter. But a lot of people didn't see this, and it was confusing. Why is it showing that I can skin a wolf with flint? I'm trying to make a hatchet! Now it shows no steps at all, and spells it out for you. "MAKING HATCHET (FLINT NOT RELEVANT)"

Also, I found and fixed some mistakes in the filtering logic that led to the display of extra, irrelevant steps. To summarize, the whole filtering thing works much better than it used to. Try it. You'll like it.


Okay, so what happened during the update process?

First, an old version mismatch issue which had bitten me before reared its head. The client makes sure that it is at or ahead of the server's version, and if it is ahead, it makes sure that it's data version at least matches the server's version. This works fine most of the time. For the weekly update, I can decide to either update the client binary first, or update the data an server first.

But during weeks where the client and server receive several updates, while the data version remains untouched (like this week, when I was fixing all kinds of steam issues), we can get into a dangerous situation. The server and data version MUST be updated together, first, before the client is updated.

But this week, there were protocol changes requiring that the client be updated first. The server was going to send newly-formatted messages that the client wouldn't be able to parse. So, I blindly updated the client first, without realizing that we were already several versions ahead of the data version.

On next startup, the client checks if its version matches the server. Nope. Server is v167. Client is v168. Okay, well, is the client data version at least matching the server's version? Nope. Data is v164. Client displays a version mismatch error.

This was put in place to make sure that people connecting to private servers wouldn't experience content-mismatch crashes if their private server lagged behind the official update schedule. But actually, the above logic is too strict. If the client is really at v168, we are ahead of the server, but we can see that our data version number is behind the server, so we're actually okay. What we really need to worry about, in the case of private servers, is if both the data version and binary version number are ahead of the server's version number. So, the client logic has been fixed to prevent this kind of version mismatch in future updates.

So that was fire #1. It caused about 34 minutes of downtime for people who were downloading the update and trying to reconnect. You can see the first huge downward spike in the above graph.


After that got sorted, and everyone had a working client again, it was time to push out the content update. That all went according to plan, and the Steam clients got the update correctly. Everything went fine, until server2 tried to start up. It got through its init process, and started accepting connections, but then got bogged down into a huge processing load. 99% cpu, even with 0 players connected. And still accepting connections.

The reflector, the bit of server code that tells you which server you should go to, had a 3-second timeout in place for a server. So, when checking on server2, it would wait 3 seconds, and then timeout. But with hundreds of client requests coming in, 3 seconds of waiting for each one was too much. And server2 was at the top of the list, meaning that the reflector would consider it first, for everyone, before considering other servers. 100s of stalled web requests means that nginx starts running out of processes, eventually triggering the dreaded 504 gateway timeout. This results in no one getting successfully assigned to a server, and error messages getting displayed in the client.

Fortunately, I was able to track the problem to server2 very quickly, and take it off the list. I think there was something like 15 minutes of downtime from this, fire #2.

But I also realized that server1, which was in the queue to update next, would likely have a similar problem. Other servers didn't seem to be affected.

Initial debugging showed that server2 was bogged down with 200,000 moving animals. Hmm.... maybe I made mosquitoes too common in this update. That must be it.... the Mosquito Meltdown.

But further investigation showed that it wasn't mosquitoes at all, but wild sheep and boars. 200,000 of them, all trying to move at the same time, right after server startup.

Well, thank you Steam, for exploring more of the map on server2 than had ever been explored, because you unearthed a horrible, lurking issue. Animals aren't supposed to move unless they are seen by a player. So, even if there are 200,000 of them known to be in the map (seen by some player at some time in the past), at server startup, this should be no different than a map containing 200,000 trees or rocks.

However, a particular bit of server map processing code was inadvertently "looking" at these moving animals, causing them all to get put in the queue of moving things that need active updating.

This has apparently been a lurking problem for a while, but historically small enough that the server could simply brute-force its way through it at start up, and get back to processing requests. Not this week. 200,000 moving animals.

The first step was to fix the reflector so that it would timeout more quickly. These servers are all connected by high-speed networks. 3 seconds is overkill. I was actually able to bring the timeout down to 1/8 second (125 ms). If a sever is too bogged to respond in that time, better think of it as offline anyway, for now, right?

And with that fix in place, when server1 restarted and had exactly the same issue as server2, there was no widespread outage triggered.

With everyone back online and happy, I spent the rest of a very long night refining the server startup code to avoid "looking at" any of the map objects that are being processed. I got server1 down to the point where it could startup, process the entire map, including all 200,000 animals, but not result in a single animal waking up and moving, at least not until a player spawned in to see them.

This also dramatically sped up the server startup and shutdown process. The other servers will get this improved code during the next update, later this week.


Happy to have this out there in your hands.

And thanks. Thanks for playing my game.

Jason
Tin Hearts: Prologue - Tenuous
Updated controls are now live for the Vive wands! The default controls now use swipes on the touchpad to rotate blocks, and smooth movement is done via pressing rather than just touching the touchpad. This means that you can now move, teleport and control time whilst holding blocks and makes the block rotation much more reliable. By request there is also the option for 'toggle possession', where the first trigger press will pick up a block, and a second trigger press will release it.

We look forward to hearing how you find these new controls and, of course, the old controls are still available in the options should you wish to switch back.

Thanks for playing!
Nov 19, 2018
Grapple Force Rena - Gabby


We're swinging into action on Steam starting December 4th, 2018!

Check out the demo now here in the store of on http://GrappleForce.com
Nov 19, 2018
Community Announcements - thrawn
Nov 19, 2018
Marble Skies - BirdwallGames


View your friends times in game!

You now have the ability to see all your friends times in game by visiting the pause menu, as well as some fancy new stats information! Can you beat all your friends to get as many Gold Medals as you can?




Please note that you must have a public Steam Profile in order for your friends to show.
Nov 19, 2018
The Uncertain: Light At The End - G.R.E.A.T.
Hello, dear friends! My name is Alexander Tsvetkov, I am a game designer at ComonGames studio. Today I will tell you about the features of the Episode 2 gameplay, and Artem Netyagin will reveal the differences with the first episode. Our gameplay is engaging thanks to our small gameplay perks. You will hardly notice all of them, but together they work to build the picture. We achieve this by constantly asking ourselves the questions: what would attract the player’s attention? What would be interesting to explore? Which paths would they want to take? Which events would help unwind the story in the most accurate manner?

For example, almost every potentially interesting object can be inspected. In most cases, Emily, our protagonist, has something to say about it. One of the new game features is Emily’s smart watch. Its in-built scanner helps you see something that’s hidden from your eye at first sight. There’s a thrill of discovery in there: what will I find if I scan another portion of the world?



Other than through interactions with the environment, the game’s world is built up in dialogues. They are varied, and the decisions you take affect the whole progress. You can influence the choices of two members of your survivor group, as well as establish positive or negative relationships with them. For instance, you may have some items that aren’t crucial for the story, but you can use them to change the relationships among the team members. This encourages the player to pay more attention and develop a deeper understanding of how their actions affect what’s happening on the screen.

You will find various pop-culture references in the game. The story is set in the future, in a place which the player is not familiar with. But Easter Eggs will help one to feel surrounded by something recognizable and loved.



Artem Netyagin:

In Episode 2 we decided to go with the third-person view instead of a static one to make controls more intuitive and let you examine our world more thoroughly. It won’t make you feel as if you were playing a completely different game, because many elements have remained the same: for example, the dialogue interface, hotspots, and the action circle.

Speaking of dialogues, we’ve changed the dialogue system. Now you can go over all the available options. In Episode 1 the dialogues were non-linear, and you could select only one of the lines.

It is, of course, impossible to list all the game design changes in one update, given that we add and remove features as we're moving along the development process, refining the ultimate gameplay experience. You have tried one of the first “rough cuts” playing the tech demo. We’ll appreciate your feedback in the comments section and your opinions as to what you liked or disliked.

Nov 19, 2018
The Uncertain: Last Quiet Day - G.R.E.A.T.
Hello, dear friends! My name is Alexander Tsvetkov, I am a game designer at ComonGames studio. Today I will tell you about the features of the Episode 2 gameplay, and Artem Netyagin will reveal the differences with the first episode. Our gameplay is engaging thanks to our small gameplay perks. You will hardly notice all of them, but together they work to build the picture. We achieve this by constantly asking ourselves the questions: what would attract the player’s attention? What would be interesting to explore? Which paths would they want to take? Which events would help unwind the story in the most accurate manner?

For example, almost every potentially interesting object can be inspected. In most cases, Emily, our protagonist, has something to say about it. One of the new game features is Emily’s smart watch. Its in-built scanner helps you see something that’s hidden from your eye at first sight. There’s a thrill of discovery in there: what will I find if I scan another portion of the world?



Other than through interactions with the environment, the game’s world is built up in dialogues. They are varied, and the decisions you take affect the whole progress. You can influence the choices of two members of your survivor group, as well as establish positive or negative relationships with them. For instance, you may have some items that aren’t crucial for the story, but you can use them to change the relationships among the team members. This encourages the player to pay more attention and develop a deeper understanding of how their actions affect what’s happening on the screen.

You will find various pop-culture references in the game. The story is set in the future, in a place which the player is not familiar with. But Easter Eggs will help one to feel surrounded by something recognizable and loved.



Artem Netyagin:

In Episode 2 we decided to go with the third-person view instead of a static one to make controls more intuitive and let you examine our world more thoroughly. It won’t make you feel as if you were playing a completely different game, because many elements have remained the same: for example, the dialogue interface, hotspots, and the action circle.

Speaking of dialogues, we’ve changed the dialogue system. Now you can go over all the available options. In Episode 1 the dialogues were non-linear, and you could select only one of the lines.

It is, of course, impossible to list all the game design changes in one update, given that we add and remove features as we're moving along the development process, refining the ultimate gameplay experience. You have tried one of the first “rough cuts” playing the tech demo. We’ll appreciate your feedback in the comments section and your opinions as to what you liked or disliked.

Nov 19, 2018
Half-Life: A Place in the West - Yorick
Hey everyone,

Happy 20 Years of Half-Life!

As announced this past weekend, today we are releasing another content pack for A Place in the West! The app has been updated to include the Russian Translation of Chapter 5 (Thanks to Vsevolod Stepanov and Pavel Lapinsky), as well as adding “Containment”, our new interlude that takes us back to Black Mesa, to the place where it all began.

There’s also a new Extra involving “Containment”, for which we give thanks to Rikki "Marphy Black" D'Angelo, that I’ll let you explore for yourself… “Containment” and the Chapter 5 Russian translation are both available in PDF form as well. Finally, we’re releasing Volume 2 of our soundtrack today, with 9 new tracks from Chris Jolley!



Celebrating Half-Life
This past weekend we did a Twitch Stream, where Ross played through Half-Life and we laughed at how many times he died (it was a LOT). If you didn’t catch it and are interested, it’s still available on Twitch until it expires - http://twitch.tv/halflifecomic. I will also be uploading the original to our YouTube channel, as well as cutting together a shorter “Highlights” reel for someone who wants to laugh at Ross’s deaths, and hear us talk about the comic, but not sit through 6 hours of gameplay.

We’re talking about going through Opposing Force and Blue Shift next, followed by Half-Life 2 and both of its Episodes, so if this is something that you like or would like to see more of, please do let us know! And thank you to everyone who came to hang out and chat, it was a lot of fun.

Speaking of celebrating Half-Life, Digg.com did a write-up about the 20th Anniversary, and Ross and I both talked a bit about our experiences with the franchise. You can read that here - http://digg.com/2018/half-life-20th-anniversary



What's Next?
So many things.

Since it’s the end of the year and we haven’t been as transparent during the course of it as I’d have liked us to have been, let’s take full stock, shall we?

  • Chapter 6 is going into Production in December! We weren’t able to produce nearly as much this year as I would have liked because of financial reasons, and it’s great to be getting back to it. My hope is that we can have multiple chapters release next year.

  • We’ve also been working on getting everything down on paper. Often when we’re producing, we have the next chapter or two written, but now we’re extending our lens further. Ross has been hard at work over the last few months forging ahead into the later chapters. As production is approaching the story’s halfway point(!), we’re spending a lot of time looking at wrapping up threads and character arcs. Currently we have up through Chapter 11 written (at least as rough drafts), with the plan being to finish the remaining chapters by the end of the year.

  • Over the next month, I have some homework to do myself: I’m going to rewrite the APW App to try and solve the Windows 10 problems that have been plaguing us for quite some time. I’m also going to be getting back into the world of video editing - cutting the Stream Highlights video together for YouTube and getting back into making the Commentary Tracks. We have commentary audio for Chapters 2, 3, and 4 recorded, and the audio mixing for all of them nearly done, I just need to finish the videos themselves (and add subtitles, which was a popular request with the last Commentary video).

  • Finally, Translations! These are something that I really dropped the ball on this year. We have translations for Chapter 2 that have been sitting around (largely due to financial strains) so the plan will be to get those lettered and shipped out, and then to do more prep with the published chapters and try to get the translators to help us out some more. I don’t want to make any promises about how much will or won’t be done, but I am going to make it much more of a priority than I have so far. Stay tuned for hearing more about that in early 2019.

As ever, making Half-Life: A Place in the West is an experience that we are endlessly grateful for, and wish to say thank you to everyone who has been with us on the journey so far, and to everyone new who is joining us along the way. I am so excited to share with you all of the exciting things we have in store for the next year.
Nov 19, 2018
Community Announcements - office
Community Announcements - stugan-dev
This week's update brings major performance improvements for all of the epic and awesome games you have been building.

Before:


After:


Addressing performance was our major focus the past week, but some other fixes include:
  • Fixed the multiplayer bug where you couldn't see other players if you were in first-person.
  • Added HandlingActor.lookAt(..) so you can script your own turrets that aim at other actors.
That's all for now - have a great Thanksgiving, everyone! We are super grateful to all of you that have given our game a chance, and we're especially thankful for the helpful feedback.

--Logan and Steve

PS. The awesome game we used for the before/after GIFs is "Mountainview": https://steamcommunity.com/sharedfiles/filedetails/?id=1554296852&searchtext=mountainview

...