After a couple of days of quiet I’m back. Saturday I was just tired and Sunday I wasn’t working due to a headache (probably just a bit overloaded).
Today has gone well. I’ve just spent it working through small issues. Changes to information passed back at login, syncing on exit, fixes to tile visibility after a build action, and more stuff.
Tomorrow I’m either going to hammer on with more tickets from the pile (there are plenty) or I’ll look at the synchronizing of the fog of war information. The serializing of that fog of war info is super simple but, as multiple players can ‘own’ the same creature, I need to have a think about who is in charge of calculating that stuff. Probably fine to just pick something dirt simple like ‘the player with the lowest player id’. We can always revisit this.
Alrighty, time for a drink.
Today I was working on the cutscene system and it was much more involved than expected. In short the reason was that it touched on a whole bunch of logic and UI code that (as it was a prototype) had never been written expecting multiple GMs.
Damn I just realized that’s pretty much all there is to say about it without having to rambling on about pointless minutia..bummer :D
Guess that’s it then! Tomorrow I’ll be traveling in the morning but then will probably look into refactoring the GM request UI. Should be some fun edge cases in that.
It’s a little past midnight but who cares, it’s been a great day.
Jonny has got the basics of the new placement code working. It’s now much easier to move pieces under overhangs regardless of if they are on the same floor or not. He also got drag-select in so I will hook that up in a few days so we can delete/move multiple tiles.
I’ve been working on the game state and player handling code. It’s now much more reliable and a fair bit cleaner. This work makes sure that if ‘host’ (the client tasked with syncing to the server) leaves that the job is passed to another client.
I’ve also started work on supporting having the same user logged into multiple clients simultaneously. In the future this could allow us to provide additional tools that hook into the current play session.
It’s hard to stress how much nitty gritty stuff has been, if not implemented, at least properly speced out for the release. I’m stoked for the next 2 weeks of progress.
Hi again folks,
I’m down at @jonnyree’s place right now for a couple of days hacking on TaleSpire and it’s been going great. We have been going through the features that will be in the alpha and making decisions of behaviors that, up to now, were a bit vague. That has unblocked a bunch of tickets so they are all on my todo list for the next couple of weeks (not that I have been short of work).
Currently I’m fixing some bugs by setting up some simple state machines for managing the current game mode and client state. This just makes some things more explicit and makes the transitions between the states very explicit.
Tomorrow I’ll switch from this onto the rewrite of the placement code. This is the bit that handles the behavior of picking up and moving pieces. Naturally it’s critical to nail the feeling here as it’s its your primary interaction with the game. It seems like you could just attach the piece like a pendulum and let physics drive the experience but nope :) Lot’s a pair programming will be on the cards.
Alright, that’s the lot for tonight.
Good evening! Today I got the multiplayer undo/redo code merged in, fixed some bugs related to NetworkIDs for objects and started planning the code to handle host migration.
Tomorrow’s task will be to finish of the aforementioned plan and get as much of it implemented as possible. The goal there is just making sure the game knows what to do when players with specific roles leave or join and how to migrate responsibilities as it happens.
On Wednesday I’m back visiting @jonnyree where we have a of tonne planning to do (especially around gameplay behaviors for the alpha) and we need to make a solid foundation for the new piece placement code. This is one area where the feel is super important so it’s best for us to pair up on that.
As every we’ll be keeping you posted as this progresses.
Today was spent chasing down smaller issues and, for features that need UI work, writing down behaviors which I don’t think we have defined well enough.
As an example for the latter we haven’t defined whether a player who does not have permission to GM can join a game without a GM. It might make sense as maybe the GM has said they’ll be there in 5 mins. It could be cool to let the player look around and re-familiarize themselves with the board, however there are also certain tasks that a player needs to have certain permissions to perform and that player may not have them. To be more specific some server calls require someone with GM rights.
The first task will be to define what behavior we think feels best and doesnt pose any risk to the integrity of the play session. Then we need to work out what technically needs doing and whether it will be feasible (along with everything else) to get done for the alpha.
Please don’t get to hung up on the example above though, it’s just and example and there are plenty more tickets to review :)
Today I also worked a little more on sync, making sure host migration worked properly. There are still some details to take care of there but it requires some of that planning mentioned above. I also am finally writing the undo/redo code for multiple simultaneous GMs that will be in the alpha. This is resulting in some changes to the serialization code which should help us down the line.
As the alpha rolls onward we will need to be able to make changes to the file format that the boards are stored in. To support this I’ve started stubbing out the format upgrade code. This will just handle the case where a newer version of the game is opening an older version of a board file. Simple but necessary stuff.
All in all it’s been an ok day. I’ll kick of tomorrow by finishing the undo/redo stuff and then dive into the next pile of tickets.
Today was spent testing the ‘unique creature’ code across multiple clients. This went well and found a good few bugs. I rewrote the board sync as that was on the todo list for a while and started looking at other aspects on sync which need to be better.
The first one on my mind is making sure that each client knows whether their version of the board is more recent than the version on the server, it’s a simple problem but has a few subtleties to it. It’s not good enough to know that the server version is different as it is possible that you are building a board on your own (for a future session) and the power goes out. We would like to use the cached version of the level on restart and know that it can be pushed over the server version. A simple version id can handle this but I’d still like to muse a little longer on the potential downsides of this.
Another thing I need to consider is how scriptable assets handled with regard to sync, we obviously want to be timely about pushing the state of things like locked doors & chests to the server but with modding it will be possible to create assets who change state near constantly, how frequently do we really want to sync this? I’m not gonna spend too much time of this now as modding wont be exposed in the alpha and next year I’ll be adding support for huge boards which is going to require changes to sync anyway.
There are bunch of other little details but this will do for now,
Evening folks, unique creatures seem to be syncing well now and I’m on a bit of a hunt to clean up a bunch of warnings that have been piling up for a while. This touches on one rather annoying aspect of Unity where, if a script has become disconnected from a prefab (due to a rename or something, it can’t tell you what the file used to be called so it’s damn hard to find out how to fix it. Bites when a bunch of stuff in unity is pretty great.
Anyhoo tomorrow I’ll introducing a second client and then will be doing more testing and fixes.
Thanks for stopping by!
Today has been spent in a test and fix loop. Every now an again I find something that I had missed or put off is actually required and then I have to push some changes server side. I’m fairly happy with that process so I’ll probably write a post on it sometime.
Tomorrow I’ll be carrying on with the same as today. I got some error to do with Photon IDs when spawning the unique creatures so I’ll start with that. Then it’ll be hooking up the calls to update server side info on the unique creatures.
Evening all, another small update. I’ve continued work on the syncing of unique creatures which are creatures that can move between boards and who’s stats, hp, inventory, etc are stored on the campaign (player controlled characters are the main example).
Tomorrow will be spent testing what I have so far and trying to find where it can break down, hopefully Thursday will then be spent cleaning it up. As such it’s going to be a couple more days with short dailys as there is very little to tell. It’s just small iterations and plenty of thinking :)
Until next time, Peace