Ah today has been fun again. A few things that were done were:
- A few more little fixes to serialization of unique characters,
- If you delete a character that is unique, remove it’s ‘uniqueness’ server side
- Added text to help debug fog of war (this was great, more below)
- fix two bugs in fog of war search when the search crossed zones
- make sure that when the octree node is larger than a tile that the fog of war search takes that into account in calculating distance walked (just fixed up some lazyness when coding the feature)
- Fix case where creatures you don’t control seem to load in an incorrect position when you join and existing play session on a board
- Fix dumb bug where non GMs weren’t loading unique creatures properly if they were the first player to reach a board
- Fix bug in quadtree deserialization
- Serialize fog of war for unique creatures. Sync it to players on join and store it in board so you can leave and rejoin board much later and it is remembered.
- Add code to recognise and upgrade boards stored in an old format
- other misc small fixes
Of these the most fun was the adding some additional info to the debug view of the fog of war so I’ll jsut rabbit on a bit about that. This really is one of the places where Unity shines, its so easy to add additional UI to the editor, not just in the inspectors but in the scene view too. I was struggling working out why the fog of war was behaving strangely so I decided to show a number at every ‘step’ of the search to show how far the character could still walk (how many steps remaining). It took a few tweaks as the fog of war search is done on a different thread and UI elements have to be drawn from the UI thread, also I wanted the text to remain visible for a number of seconds. Anyhoo the result was that every time you placed a creature the scene view looked like this:
the red circle is where the creature is
When I did this in the morning I could immediately see that the numbers were wrong when the search crossed a boundary. Turns out that was a simple case of not initializing an int in one of the constructors for the search. Also there was a case where the number went from 0 to over 4 billion, that’s an easy one, unsigned integer wrap around when subtracting 1 from 0. Each is a simple issue but it just became obvious as soon as I could see a tiny bit more info. Yay tools!
Out of curiosity I added a little slider to the creature’s inspector to control how far the search would walk, this was great to fine tune and find a default value that felt nice.
The other stuff doesnt make for nice pictures but is all obviously needed for the alpha.
Here’s to tomorrow, hopefully it’s as productive.
Hey again! today has been spent taking places where we would make multiple calls to the backend and merging them into single calls. Makes stuff a bit faster, simpler and more robust.
There’s really not all that much to say about that. It’s a bit fiddly as it is relatively easy to introduce subtle bugs and I’ve been chasing down a few of those (tomorrow morning will start with squashing one).
Other than finishing that work off I’ll be getting things in a place to merge into the master branch. I’m not as far along as I’d like but hopefully I’ll pick up pace again.
Work rolls onwards. Unique creatures seem to be working ok. I still want to persist who controls them across sessions so I’ve added the server-side code for that, now I just need to hook that up client-side.
A GM can now easily move all the players from one board to another, although we still need to add the UI for this.
This weekend I’m going to focus on getting the branch I’ve been working on merged into master. To do this I add some dev features back in. If I have time I need to add the code to handle cases where the connection gets flakey.
Hopefully we will have some news on the updated UI in a week or so.
Watch this space!
Hi all, sorry for the lack of daily yesterday. I got a bit burnt out so I took a short break to get my head back on straight. Today I wrapped up some refactoring of code handling losing network connection and similar cases. Tomorrow I’m doing some work on the server side of the unique creature code. I’m hoping that’s something I can get done in the morning and then looking code to move your party between board smoothly (that should be easy too).
Hopefully I’ll have more details tomorrow.
Thanks for stopping by!
Well, to balance out the successful days, there is today. Today I had a issue when some of the rush to get features written had resulted in some code that was harder to deal with that it needed to be. ‘No worries’ I think I’ll just refactor XYZ and this task should be easy… 12 hours later and I can barely remember what the issue was that motivated the refactor. I have essentially spent a whole day for a questionable gain when time is what I have least of right now.
So yeah, that’s not a great day. At this point its probably worth just pushing through and finishing up the cleanups. Hopefully the changes are worth it, but if I were to do it again I’d probably have just shut my face and kept hacking until the alpha was out.
Let’s see if I’ve learned a lesson.
Until next time
As promised the video of hammering the networked undo/redo. It’s pretty stable in the video but I do have one bug in that system that I’m going to fix tomorrow (looks like a simple mistake in when updating the history stack, nothing too worrying).
Today has been focused on asset deleting and making sure that all the subsystems that have to hold references to board assets (like tiles) release them if the asset is deleted. An couple of hours was spent on refactoring the multi-select tool in my ongoing (entirely wholesome) love affair with state machines, its a good deal more robust now and the code to release delete assets is much faster. That latter part is important as any time you have a selection someone else might delete some or all of the tiles you have selected.
There is still a lot more I can get out of this speed-wise but it’s not wise to spend more time there given that it’s not yet an issue and there is so much to get done for the alpha.
On that subject, work continues. I’m up to 128 tickets on github :p but having gone through the codebase I feel the number of engine related tickets are not going to grow violently more before we release. Lots for the UI though :)
Right. I’m off to chill and watch ‘an american werewolf in london’, such a classic!
Happily it’s all still going well. I started the day switching the board syncing from http to https, a small task but of course it’s very important. The only reason it hadn’t been done already what that things were being built quickly to test the mechanism. I’ll ramble on about my future plans regarding security another day.
Thanks to some recent changes to the board-asset code we now know the place the pieces will land the moment they are released by the player. This lets us start the fog of war update a few frames earlier which makes things feel snappier.
Also thanks to @jonnyree adding drag-select I added deletion of multiple tiles. It feels so good to crazily mash ctrl-z and ctrl-y on one client and see that the result is totally stable on the other. I know of a few places where things could go wrong though so I am fixed them up tomorrow.
I’ll post a video of the undo/redo tomorrow too, even though it’s doing what it has to do I’m still stoked to see it doing it so well :)
Alright, time to hit the hay.
Today went pretty well. I mainly focused on adding invite codes for campaigns. This simply gives you a shortcode that your friends can paste into TaleSpire to join your otherwise hidden campaign.
We will add other ways of doing this post alpha but to start with this will be how it works. It makes it quite easy to drop the code into your discord chat and have everyone join pretty quickly. It also avoids that thing skype has where they allow everyone to query all other users by name when adding a contact.. gross.
We are pretty adamant about not being like social platforms which try to push events in your face in order to drive ‘engagement’, so whatever we add to this in future will need to maintain the goal of keeping TS polite.
Other that the above as miscellaneous fixes, I also went through the code base filing tickets for every todo I had so now I hope I have a slightly more complete view of what I need to do for the alpha release.
Until tomorrow, peace.
I started out the day with 65 tickets, I closed 8, so now I have 66 tickets. Yay programming :D
Just to be clear, this is just due to filing thing as I came upon them rather than breaking more things. So yup, it’s been a good day.
I’m not sure how interesting tickets like these are to anyone, but it’s stuff like:
- adding ‘delete board’
- session keep-alive
- fixes for silly ux things (focusing on the piece every time you pick it up)
- staying in ‘cutscene mode’ (to stop players moving pieces) until a Gm has joined the session
.. and even more specific stuff.
It’s all stuff that obviously needed doing they are all low risk tickets so they got left until more of the major system had been worked out.
Right time to go see some mates,
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.