Hotfix: speed improvements in Rules and Online Game Menu Screen
We found out that we had a bug which is only visible when there are a ton of Online games going on at once. The framerate in the online game menu screen was like 1 fps even on a good computer. We've fixed the underlying issue & it's back at 60 fps.
The Rules screen had a similar issue... some of our 2D objects were measuring and re-positioning themselves every frame. We're caching that stuff now.
Still have more work to do on various 2D performance stuff here and there, but this was urgent so we got it out today.
Maintenance update (Rematch & Sliders)
Fixed the "Rematch" functionality which hadn't worked correctly for online play since the move to BlueLine Cloud. Now it's good again.
Sliders were very finicky for clicking/dragging before. They work as expected again.
Small update: rotation button fix ;)
The last update caused the rotation buttons to disappear, so the only way to rotate was with the shift-keys. That's not cool!
Just pushed a new Windows build. Rotatey-ness restored.
UPDATE: Two bugfixes
Fixed two bugs in Khet that have been lingering annoyingly for a while.
== Crash on Exit bug ==
The first fix is to the crash that would happen when you close the game. It really doesn't have any effect (since you're closing it anyway) but it's still really annoying and makes us look bad ;)
It is related to a bug in a library that we use (MojoShader) and we wanted to figure out a way to fix that library, but haven't yet. In the end, we just worked around the problem for now & reported the bug to the library.
== Seemingly Random crash in game ==
We would occasionally get reports that the game would crash right after a move. It didn't make any sense, but user dareios90 gave us a screenshot & that made all the difference.
Turns out it was a REALLY weird issue. In code, we use something called "hashes" to compare objects to each other. We kind of assume that these hashes are unique, but technically two hashes can be the same as each other in extremely rare cases and that causes big problems. That's called a "hash collision" and is exactly what was happening.
We solved that problem and pushed it out too.
The release today only updated Windows. The crash-on-exit was a windows-only bug, so Mac & Linux are already fine there. The fix for the second bug will be picked up in the next release we do for Mac/Linux but is fixed in Windows right now.
Update! - fully on FNA, async fixes, Linux gamePad support (Win,Mac,Linux), other fixes
Here's what we've changed in the last few weeks:
This update includes an upgrade of our library from Monogame-SDL2 (sorta FNA) all the way to the latest FNA. This should fix some random graphics issues, especially on older graphics cards.
Performance improvements! (largely due to FNA upgrade... but not entirely). Depending on what part of the game you're in, it can do 10% to 20% more frames-per-second. If you're at 60 fps, then it just stops there (to not waste your CPU) but since the cap was always at 60 fps, you'll just be using less CPU!
Bunch of Async fixes & tweaks.
We tweaked the BlueLine Cloud experience. Now, if you hit that "signup/connect" dialog, and you don't want to send us any of your super-secret-secret-data (ie: your email address), then you no longer have to put in a fake email... you can just hit "No Thanks" and you will get to play anyway.
When you realize it was a bad idea NOT to set up an email address (because it's anti-DRM that lets you access your data outside of Steam), you can add that after-the-fact.
GamePad support works in Linux again. That's really what forced us to update to the latest FNA ;) ...we've noticed some weird spots that don't work right with Gamepads (game settings, Rules dialog) so we'll be fixing those soon hopefully.
Not that it really matters to anyone YET, but all of the strings are in an "internationalization system". This means we can start translating to other languages.
Windows, Mac & Linux were all updated at the same time.
#TableTopDay Update - bugfixes! (Windows)
We fixed a handful of bugs. For now this update is only for Windows because we're still hammering on trying to fix game-pad support in Linux (so our Linux build is unstable right now).
Here are some things that are fixed by this push:
Rematches against the AI would get confused & the AI would pass because it was trying to make a move before the pieces were loaded onto the board.
Could not create a lobby after joining (or re-joining) an async game.
If you started an async game, then played your first move, if you left the game, it would show it as still being your turn.
Various race-conditions!
We fixed entire swathes of inter-related bugs with Async (thanks for all of the help debugging, shiny people!).
We have a few bugfixes left on our short-term radar, but wanted to get this batch out asap, to the majority of our users. We're hoping to have the Linux build stable again shortly (and with working game-pad support), and once that happens we'll run through the release process on all platforms and get them all kicking again.
Thanks again for all of the help, please keep reporting anything you see that's out of the ordinary! Async is probably a bigger challenge than it sounds, so it's been FANTASTIC to have so much helpful debugging info from people. There are some things that our testing just doesn't find.
Thanks again and Happy TableTop Day! :D
UPDATE: Async play!
Today, we've release Asynchronous Play! This means that you can play a game even when your opponent is not online (and vice-versa). So it'll be a lot easier to find players and to finish games.
Here's some things you need to know!
<*> All online games now support Async... instead of Quitting, you can now "Leave" the game. This is perfectly safe, you will be able to come back at any time.
<*> All online games now have a "turn timeout" setting which controls how long you have to make a move. The default is 7 days, so this is typically just to prevent users from abandoning a game when they're losing. If a turn-timeout passes without the active player moving, then that player forfeits the game.
<*> To avoid the problem of two people having to be online at exactly the same time to start a game, you can now "Start Alone". Basically: if you "Create Game" online, then you hit "Ready" in the lobby, but nobody else is in the lobby yet, you'll have the option to "Start Alone". At that point, you'll go into the game (and you can even move, if it's your turn) even though there is no opponent. You can safely leave the game and it will still sit around waiting for someone to join it.
Most of these features were released with the launch of Reversi a week ago, or so, so we've worked out a decent number of bugs, but if you run into any issues, please let us know. :)
This should make it much easier to find & play Khet games online! :D
Enjoy!
Online changes in a few weeks: Async Play
Just wanted to give a head's up on some significant changes before they go live in a few weeks.
One very common request we've had from users is for the option to do "Asynchronous Play" which means the ability to play someone even if they don't stay online. So you can just login when you have time, play one turn, then log-off and the game keeps going.
We've always planned to have this, and now we're finally on the way to having it done! This is not something Steam supports, unfortunately, so we have to create our own game-servers and replace a bunch of the built in Steam networking stuff.
== What changes will I see? ==
You will now be able to play with people even when you are not both online the whole time. This is sort of like "play-by-mail" versions of Chess. This should lead to more online play, as well as some MUCH more challenging matches for those who want them.
When you go to play an online game for the first time after the change, you will be prompted to set up a BlueLine Cloud account. This is a free account, and all it does is tell our game servers who you are on Steam. This is just a technical limitation. This is very similar to the PlayFab signup when playing Planetary Annihilation.
If everything works as planned, you'll never have to log into BlueLine Cloud manually.
Email: When you provide an email address during BlueLine Cloud account, we'll NEVER sell that address to 3rd parties. We WILL use it for sending you notifications such as "It's your turn" or "You have 1 more hour to play a turn or you forfeit!". You'll be able to turn off/on each notification at any time. We'll also put the email addr on our BlueLine announcement list which is super sparse (I think we've sent 2 messages in 4 years) and you can, of course, unsubscribe at any time.
When you set up an online game, there will now be a Game Setting for Turn Timeout. If a player takes longer than this amount of time, they forfeit the game. We currently plan to allow this to go as high as 30 days per turn and as low as 1 minute per turn. This is not meant to be an implementation of "speed" games or "timed" games (that is likely to come later), this is just a way to prevent people from having games go on literally forever if they're losing.
The timeout settings will show up in the list of online games. It'll say something like "7D/turn" which means you can take no more than 7 days per turn.
Some fixes: Steam was always really bad at actually reporting which games were in progress. Now, we're in control of that code so it's likely to be way more accurate.
Some potential bugs: Please keep in mind, we're running our own game-servers now, and there are likely to be hiccups and potentially even some server down-time. We'll be doing our best to keep them up as much as humanly possible, but our game-servers are about 10 years younger than Valve's so realistically, we'll probably mess up occasionally before everything is perfectly stable. Please be patient with us & report any problems as soon as you see them!
== Future Coolness that this enables ==
Once we have our own game-servers this paves the way for several other really cool features that we've always wanted. These include: game histories that you can review turn-by-turn as well as super-cross-platform play so that you can play games against platforms other than Steam (PC/Mac/Linux) such as iOS/Android. This will make an even larger pool of players online at any given time. All of these features will take a really long time, but having our own game servers is a huge step in that direction.
== Questions? ==
If you have any questions, please let us know. In the meantime, we're going to go back to working on this (we've been cranking on this for 3 weeks so far, and have maybe another 3 weeks until we're done).
Pushed new Mac version
Just got back to the US of A and rebuilt the Mac version. It should now match the Windows version.
This update was a handful of tweaks. See the details here: http://steamcommunity.com/gid/103582791436383774/announcements/detail/201865556441358034
I tested the build before I pushed it, but I'm admittedly very tired so please poke around & let me know if I actually broke anything while making this build! ^_^
Small update to Windows version
I'm travelling to see family for the holidays (heja Sverige!), so I'm away from "the lab"... Mac & Linux updates will come shortly after I return in early January.
We did a push yesterday to fix a bug reported by user "stufff". Some users were getting crashes sometimes when Achievements were won. The Achievement seemed to actually get granted (yay) but the game still crashed which is jank.
We also managed to pick up a few other improvements to our game-engine that we made since the last update.
Here's what's in this update:
Fix occasional crashe upon winning Achievements
Fix the in-game picture that tells you about the Beamsplitter if you don't have it yet.
When someone joins the Online game global lobby, now there is an audible sound effect (the volume is controlled by the SFX slider in Settings) this will help you notice when someone else shows up. That was a huge problem when waiting around before... if you just had Hive open in the background, you wouldn't even notice when someone else showed up.
Now when people join/leave the global lobby, there will be System Messages in the chat box which will announce the person so you can keep track of who is coming & going.