Heya all, time for a quick behind the scenes again.
Those who have been keeping count since the dev stream will know that we are only a couple of weeks to go before we should be doing our kickstarter. We really need to focus on this so we will be pretty much stopping updates to the game for the next couple of weeks. I’m going to get the ‘duplicate board’ feature shipped this weekend and then I hope to fit in some bugfixes, but I think this is what we need to do to make sure we get everything done.
Other than that I finished v1 of the ‘duplicate board’ feature mentioned above. It’s a little rough around the edges but nothing not acceptable for an alpha. We just need to make an icon for that now and it’s ready to ship.
Not much more to say other than thank-you once again for caring so much about our little game.
We’ll do our best.
I was too tired to writeup last night’s dev log so here it is a little late.
I really want to get a user visible feature out this week so I implemented ‘duplicate board’. This will let you click on an icon in the board panel and duplicate the chosen board. This will be handy for a lot of cases but I love the idea of making a town, copying it and then destroying the town for the players to visit again after the calamity.
The hard parts had been researched or implemented when I was looking into the S3 part of cleaning up old board files. All that was left to do was write the database queries and expose it to the game itself.
With the core feature now working I just need to do cleanup and handle the fact that it currently doesnt copy the board description (an easy fix).
Back later today with more news
Today I spent most of my time working on the code that deletes old boards from the backend storage.
Every time you load a board TaleSpire takes a new snapshot of the board that you then modify during that session. We keep hold of these snapshots so that we can at some point give you the ability to roll back to one of these backups in case something drastic happens.
Of course this means we are slowly accruing more and more board snapshots so they have to be cleared up. The goal was to keep only the 10 most recent snapshots. Any older than that will be deleted.
Now even though a snapshot is old it would still be good to be able to recover it for a short window of time so we have set up ‘buckets’ on S3 which auto-delete files that have been in there more than 14days. This means the task is to identify the old board snapshots and move them to these buckets.
As this operation needs to touch every row in the ‘board files’ table in the database it could be rather costly so we are using postgresql’s materialized views to help with this. This lets us chose when to update the view at the cost of it being out of date after that. This is fine for us as the worst that happens is that we don’t delete a few snapshots as soon as we could, it will never result in us deleting something we shouldn’t.
After that it was a case of setting up the erlang process that would take care of this at regular intervals. I got the hard part done, namely identifying and moving the files, but for whatever reason the event isn’t firing automatically. This will be some simple mistake on my part so I’m not worried about fixing that relatively soon.
This also means I’ve tested the bulk of the code I would need to implement ‘duplicate board’ so if all goes well I’ll get that out this weekend.
Until next time,
Heya folks, @Baggers here again,
I didn’t write a log last night as what I thought was a quick nap on the sofa turned into the kind of sedation usually reserved for surgery.
On Friday I wrapped up the experiments I was doing with resource loading in Unity. I was able to load the icons and index of assets at startup which significantly dropped the pause at first campaign load. The branch i was doing the experiments on is rather a mess so I’ll need to clean that up but it looks promising.
I also took the morning to take on some contracting work. I’ve done these very rarely since starting on TaleSpire but it keeps bread on the table. Here’s to the Kickstarter making that unnecessary :)
Behind the scenes @Ree has been doing great work on the campaign trailer and the assets and tech surrounding that.
Right, back to the weekend!
Alright today I was mainly experimenting with asset loading. We currently have a big pause when we load assets and so naturally we need to fix that. Some of it is just moving things earlier, spreading things over frames etc, but we need to try this stuff out to see what works.
There’s not really a lot more to tell for now. Research is cool but make for pretty generic dev logs ‘TODAY I DUN STUFF’.. good job me.
Tomorrow is a national holiday but we’ll be back with more on Friday.
Heya folks tiny log today as I don’t have much of note to report, lots of poking around with Unity and reading up on a bunch of things we may need networking wise in future.
The good thing is that the dungeon tile set is progressing well. It’s been delayed by wanting to add more texture and variation to it but hopefully we get something out tomorrow.
I best run for now.
Today started off with looking into how we are going to handle copying and sharing boards. We store all the board files on S3 so the first part of the job was to look into how to copy/delete etc files on s3 from erlang.
I’ve been using this nice little library called mini_s3 so far. It has done all the hard work but there are a few places where certain options have not been handled. For example the ec2 instance gets temporary permission to s3 from it’s IAM role and so when we make requests we need to pass along the
x-amz-security-token. The functions in
mini_s3 don’t handle that yet.
I have forked the library and have added support for the amz token to
list_objects. I’ll be adding support to more functions soon but
list_objects served as a good test.
For the rest of the day I was working on some other experiments that aren’t worth rambling about.
Seeya in the next dev log
Hello! we return to our intrepid dev log with the least dev’y dev log of them all.
Today I’ve re-read all of the #feature-request channel and broken it down into 150 (suspiciously round but that was the actual number) separate requests.
Ree and I then filtered them into piles of things we will be doing, things that will be addressed in some other form and things that don’t fit TaleSpire.
That list was then pounded with hammers until merged with our internal feature list and a Kickstarter feature list was born! This is one of the main things we’ll be talking about in the dev stream we are hosting tomorrow. You can find the event for that here
I’ve then continuing to prepare for the stream. It’s nice to see this taking shape and I’m looking forward to sharing all this stuff with you tomorrow.
Today we made progress in a couple of areas.
I focused on changing how we prepare assets for TaleSpire. This is done in a set of tool in unity we call TaleWeaver. The new prop system allows you to clip props to other tiles at certain ‘attachment points’ in TaleWeaver you can now lay out these attachment points and set what the default prop for that point is. This means we can have pretty pre-made tiles that you can disconnect things from, which lets us hit that balance between providing player control and lets people just throw things together.
We now need to add attachment points to all tiles and, since that is quite a task, I’m looking at automating a bunch of it. That will be my task tomorrow.
@Ree has been working on camera control systems for the kickstarter trailer and added an adjustable radial-menu item that can be used for controlling stats. We’ve just hooked it up for HP and it seems to work well so we will provide HP and 4 other stats to start with. These stats are of course sync’d during the session and persist across the whole campaign if you make a creature unique.
The goal for midweek is for you to get copy/paste and the stats stuff so it’s gonna be a fun one!
Programming has over the years reminded me again and again that problems with trivial descriptions often hide catacombs of complexity, and that any time you use the word just to yourself you are probably in trouble.
‘I just need to do this
<insert simple thing here>’ is a ancient spell than summons bugs and leads you into sleepless nights of crunch. SO.. when yesterday I was commenting on how copy paste would be difficult I thought I was speaking sensibly and from experience, and thus the gods of code decided that I would get smacked in the face with my own ignorance yet again.
This a long winded way of saying. This works
Which is nice, if mildly bewildering.
There are of course issues and general lack of polish. One side effect of this feature is that it really makes it easy to run into other bugs in the alpha. It’s now very easy to make very large, very tile heavy boards. Very easy to duplicate areas which already have issues with fog of war and amongst other things our selection tools still aren’t great with large piles of assets.
We’ll may have this in your hands next week so be gentle :D
With this working it made it possible to save out simple data that described prefabs. This will make it possible to save small sets of tiles to use as building blocks in game. In future we will have ways of sharing these but our first order of business to bring something similar to our current tiles. For example consider this tile:
It’s wonderful to have tiles like this but maybe you want to remove the bellows and add a lamp there, these changes could let that happen (in time). Again there are lots of details to get this to work well and it will mean updating a lot of existing assets, but we are going in the right direction.
Until next time.