A quick sunday update for you.
Today I’ve been looking at this issue and looking into how best to tackle it. I’ve come up with a fix I’ll be coding and testing tomorrow morning but the issue was interesting as it gave me a change to look at the GM Request code with fresh eyes. Once again I’m seeing places where an effort to keep things extensible for an uncertain future has really just led to a more complicated system than neccessary (or rather one that has needed patching to line up with the actual behaviour we wanted later). I’ll definitely be looking at making this dumber in future.
This post is super vague :D but explaining the details (in this case) doesnt bring with it any cool takeaways.
Progress has been unexciting but continuous. I’ve pushed the changes that reveal corners of boards correctly in player mode. It does reveal a little too much but this will be fixed in future when the resolution of the ‘fog of war’ datastructure is increased.
Today I added the class for prop assets and refactored the building/serializing/etc code to handle this new asset kind. This being seperate now lets us at unique logic for these assets. We have experimented with having props temporarily ‘dodge’ out of the way of creatures and also be able to be places and rotated with more fine grain control than of tiles. Those experiments can now we ironed out and made part of the shipping game!
@Ree, whilst ill, has put a bunch of time into the changes we need to be able to more reliably get the invite emails passed filters. More on this soon.
I’m not going to be around on friday but will be working on Sunday instead so hopefully I’ll have another post for you then.
I’ve been messing around with fog of war and whilst it’s not there yet there has been progress.
The task right now if fixing this issue. The short version of the problem is that we have a data-structure that describes where has be uncovered (we call this a creature’s ‘memory’) and we have to sample it to see if a tile is visible. We can’t just sample in the center as maybe a tile is multiple units wide and only the corner has been revealed. We also can’t just sample at the center of each sub-tile as we get situations like this
|| || ____|| _____ __A__||__B__|
A is a wall and floor tile and
B is just a floor tile. If
B has been revealed then we have to see the wall (otherwise users get confused as to if it’s the end of the board or if it’s a hidden tile). This means sampling slightly outside of the bounding box of the tile. However this still can cause issues, such as the one linked above.
I played around with a few more schemes but today swapped it out with a mechanism that does a breadth first search of all the nodes within a bounds in the creature’s ‘memory’. This has a more expensive worst case than the other approaches, but the tests were seeming to show that to take enough samples for a good result we would be paying a pretty high cost anyway. The creature memory is stored in a quadtree so in many cases the search can succeed early as we don’t have to search the full depth to find a populated cell.
I haven’t got anything more today so I’ll bail now and give ya more news soon.
It’s that time again, today was spent:
- Finishing off the fix for If GM permissions are rescinded while any GM-only UI is visible, they stay on-screen
- Case where game spuriously entered cutscene mode when GM rights were removed from a player
- Initiative mode wasn’t updating the edit UI for remote GMs when local GM changed the line-up
- Reordering of lineup was not handled correctly in the edit UI
Clearmethod which was causing order issues when new elements were added.
Tomorrow I think I’m going to look at that fog of war issue causing corners not to appear. The first part is visualizing the points that are sampled for fog of war info and then we’ll see where the bug takes us.
Today I fixed the issue that all GM shared one flashlight. I also started looking into this issue where removing GM permission from a player doesn’t close some of the GM UI they have open. I think I’m on the right track with that one so hopefully I’ll have that one done in the first few hours tomorrow.
Alright that’s the most interesting stuff.
Yesterday we pushed out a little update. It was significant for us as it’s the first update after upgrading the version of Unity we were using. That’s always tense as it can be hard to ensure that everything is still working the way it was before. The update also included a proper fix for the bug from log 61 along with a few new nice to haves like shortcuts for camera rotation etc.
That bug fix was going to go out last friday but when we tested the release we saw that synchronization was broken between the clients for this like doors, chests etc. That was super weird and after a LOT of head scratching we found out that it was due to not having reprocessed a bunch of assets after the Unity upgrade. That was a bummer that we lost a day or two to it but good as rereading all the code helped me find and fix another unrelated issue.
Today I’ve mostly been looking at tickets reported by the community. We’ve not done a great job getting back to the awesome people who have filed tickets and that bums me out. Even though most get seen as they arrive the very least we should be doing is letting you know whether we can reproduce the issue. I’m gonna try to make sure I leave some time every day for that so I don’t fall behind again.
Once again thankyou all so much for the super thorough reports that have been coming in, they truly are invaluable.
Now that the last big tickets are dealt with I have a small gap before the UI for the new features is ready so I will get back on tickets again. Expect movement on those real soon!
Time for some sleep.
Heya folks. A quick one today. With both some life business and serialization fixes out of the way it is finally time to get back to tickets. People have been amazing at filing them so the fact I haven’t been triaging these for a week sucks. I’m gonna get through reproducing as many as I can today so I can then focus on fixing next week.
@Dwarf has been killing it making tonnes of progress updating all of the tiles to the new sizes and fleshing out the sets to include everything in the test tile set we made available in the last update. These will all count as new sets as, because of dimensions changes we can’t just swap then out with the originals without breaking your existing boards. Of course that will be coming with the floor changes but until then we want to keep everything working.
@Ree has made a pile of progress on props. As they will become their own class of object they can now have their own behaviors. This includes being able to be placed in way more place, orienting to the surface they are placed on and automatically ‘dodging’ out of creatures way if the creature steps in the same tile as some props. He’s also started on the floor UI as by nailing that we can then start on the deeper engine changes.
All go but mostly behind the scenes. We can’t wait to show you more though so thanks for joining us on this journey.
p.s One thing we haven’t made time for yet is tweaking the emails so they are less likely to end up in spam. We will be doing this for the next invite push though. When we do that we will re-email all codes to all of you who are already meant to have access.
Tonight I dont have a writeup but I have a video of a simple shader effect prototype. It is just a simple vertical cutaway we can use on tiles for when your creatures are in tight coridoors. It’s going to be evolved a bunch to make it more aethetically pleasing but this was just so I could prove to myself that the core idea would work.
Only the first 50 minutes of the video are about making the effect so you don’t need to hang around for the whole thing. Also this is naturally a technical video so if you arent into hairy muppets rambling whilst typing lots of stuff then this may not be for you :)
Today I finished testing the fixes for serializing board-assets with state (doors, chests etc). There will be one side-effect when this goes out and that is all door/chests etc will revert to their default state.
This side effect is a trade-off. We are fundamentally changing how that code worked and so to handle this change we would need to do a of work and testing to port the current state over. This would be the only choice once we have released but whilst we are at this point in the alpha we want to focus on getting more content out there and that is blocked until this fix it out.
So yup that’s all for today. I’ve lost some work time due to sorting out some health stuff and tomorrow will be most taken up by that too. However in the evening I will be prototyping the start of the tile cutaway shader in my lisp stream so that’ll be fun.
Until tomorrow, Peace :)
WARNING: We want to be open in these technical blogs so you are reading unfinished, unproven ideas. This should not be taken as a promise of anything.
Today @Ree and I have been white-boarding a replacement for the floor system. We need to do this as the current system has a number of issues including (but not limited to):
- Tiles are revealed by floor which means large features need to be built on multiple floors or built in a huge stack from one floor which intersects the others
- building raised platforms that belong to one floor requires stacking and then deleting tiles as tiles always try to drop to the floor.
- hair loss
- Can’t delete or position floors as the floor is infinitely wide. If you have a town and delete a floor it deletes that floor for every building in the town.
There are also a bunch of other things that fall out of this regarding how fog of war works, which is another area where the current version of the game has issues
We are making progress but it’s a very extensive change. The goal is to let you create floor plains that are separate from each other. You will be able to adjust their height from the previous floor (in fixed increments) and they will grow as you place more tiles. The footprint is maintained down the whole stack of floors.
This would let you have buildings where you can set floor height, delete floors, etc. Building raised platforms is easy and you just build the plain and build on top of it.
Tile reveal and fog of war is also not ideal in open areas like towns right now. You build lovely multi story buildings and don’t see them until you switch floor. Also, as we reveal what your character can walk to, players don’t see roofs often either. We are musing on inverting the logic of fog of war, where you place a origin for the fog (let’s call it a fog-machine for now :D) and then scroll (or something) to adjust how far the fog flows. this gives the GM control over what is shown and the same (or similar) method we have now is used to uncover it. Each ‘body’ of fog is separate so it should hug walls in a better way improving on the current tile reveal.. we also need some more shader magic to improve the look too.
So yup, massive changes could be afoot. This is ALL just thoughts and musings right now. We are going to start prototyping the gameplay side of floor building tonight and I’m musing on ways to maintain some of the nicer qualities of the fog of war whilst getting some of the new stuff.
I expect I’ll do a stream soon to talk about the problem and the design space even if we have nothing new to show. We’ll keep you posted with things as they happen.