freenode/#shirakumo - IRC Chatlog
Search
14:30:07
Shinmera
So if you start the game, move the player around some, hit save, and restart, the player is now going to spawn where it was when you hit save.
14:34:04
splittist
Ah! What if you had a kind of save that just skipped the entities that were going to be spawned (because they're in the file/thing you haven't saved over yet)?
14:40:38
Shinmera
One idea would be to, when you open the editor, create a save state, reload to initial state, and on editor close reload the save state.
14:41:29
Shinmera
We still need a way to script events in the story to make entities appear at certain points and perform certain actions depending on where you are.
14:43:13
Shinmera
If we forget about different regions and only assume there's one "initial load" things become a bit more simple.
14:43:39
Shinmera
Then restoring state is just a matter of reactivating the quests and tasks and completing them in the right order.
14:44:30
Shinmera
and I suppose since a save state would always contain the full entity state anyway we don't even need to perform any of the quest code changes, just mark whether it's done or not.
14:45:15
Shinmera
The only problem is scripting things to take on certain state and positions, for which I suppose we could introduce named 'spawning points' and in the script just say 'move to spawning point x'
14:50:38
Shinmera
I'm... gonna go and write one of my patented crazy note sheets to try and figure this mess out.
14:55:31
Colleen
www.youtube.com/watch?v=yxw... Website (HTML), Title: Guy explaining (Meme template) - YouTube
15:19:53
Shinmera
First, I need a way to place 'markers' in the world that can be used to spawn or move things in story scripts. That way you have an easy and forward-compatible way of placing stuff even if things move during dev.
15:20:04
Shinmera
Second, the story integration is no problem at all -- the save state system takes care of persisting any changes the story might have made. All it needs to do on load is restore the state of the entities.
15:20:35
Shinmera
Third, in order to control what you're saving as the "beginning of the game state", I think I'll have a dedicated save state file. Meaning, what you save in the editor doesn't really matter for any properties that can actually change during gameplay and are thus put into the save state. To do this there could be separate buttons in the editor UI where you first load initial state before you
15:22:00
Shinmera
Fourth, any ephemeral entities /have/ to be present at all times regardless of region, so that their state can be changed from scripts and so forth. This is messy if there's multiple regions, so I think it would be best to instead try and optimise the game so we don't have to do load zones.
15:24:31
Shinmera
The optimisation is most definitely going to require a very fast spatial query structure, so that's gonna be "fun
15:27:47
Shinmera
I feel like I could get away best with a BVH. The chunks Kandria already have would serve well for that. Might just need to subdivide them and create bigger volumes for collections of chunks.
15:28:30
Shinmera
On the other hand, a quadtree can make far faster tests since the grid can be regular....
15:28:50
Shinmera
as in, you just do some integer arithmetic and a lookup, rather having to iterate and test.
18:11:16
SAL9000
Shinmera: next step would be refactoring I think, so we actually support multiple servers. Also, I'm not sure about that automatic imgur upload thing... maybe run a little httpd inside the script instead? there's other scripts that do similar things e.g. a localhost url shortener. We can keep the imgur thing, just not as default.
18:12:22
Shinmera
If there's another script that already does file upload to multiple services, integrating would be nice.
18:12:33
SAL9000
I also thought about making more annotations (ala @lichat_buffer_or_ignore) to make the command-registration code suck less
18:16:38
Shinmera
In other things, been trying to figure out how to set the topic of the buffer, but for the life of me can't figure it out.
18:17:01
SAL9000
It's all done through "bar items", which I suspect can't be interfered with by a script other than by creating new ones.
18:20:20
Shinmera
use hook_process to spawn a function that reads the file, then in the completion function send it.
18:21:27
Shinmera
Still wouldn't work drag&drop though, would it? You'd have to like, manually paste the binary content.
18:22:03
Shinmera
I think I'll instead work on the shirakumo-link extension, which would allow 'embedding' linked content.
18:22:45
SAL9000
we need a reasonable way to link updates -- for example, a send-message failure -- to the original message
18:23:37
SAL9000
you have the update-id thing in the update failure, but maybe send the channel -- or the whole original update -- instead?
18:29:32
Shinmera
The client shouldn't have to do anything for that extension, really. You already have to ensure proper order of updates by timestamp anyway.
18:31:14
Shinmera
Oh: how does editing messages work? You said it's possible, but I couldn't find anything in the docs
18:47:21
Shinmera
I wouldn't mind having a chat client that can talk irc and lichat that isn't weechat, personally, but eh. I don't want to start into alla that again.
18:54:43
Shinmera
Maiden was initially written with the intention of being able to do the distributed client thing
19:30:55
SAL9000
Heh, yeah. Also, do ping/pong messages have to have an update id? maybe special-case those?
19:47:57
Shinmera
Wonder if I should deactivate TCP keepalive in exlichat, since it already does the manual ping/pong with timeout.
20:35:40
SAL9000
Shinmera: good news, looks like we can get away with creating "new" bar items; they coexist with built-ins, at least.
20:39:47
SAL9000
and I tested connecting to an IRC server; that still shows the correct prompt, so we're not clobbering the bar item globally :-)
20:40:02
SAL9000
might help to spin up a separate config for testing this stuff, at least until it's more stable
20:43:58
SAL9000
also, maybe make the trailing = optional when loading files... at least mintty likes to copy those URLs leaving off the =
20:45:02
SAL9000
add a handler which tries to append =, I think the maximum number that you might encounter is 4?
20:46:10
Shinmera
I've been using xfce4-terminal for a long time and have never found a better terminal
21:25:24
Shinmera
SAL9000: To be clear about the update tracking thing: how exactly did you think this to work? Would a "call this function when you get a response for the update back" work, or...?
21:25:50
SAL9000
Shinmera: that's one way, but the minimum would be attaching extra info to Failure updates and similar
21:29:55
SAL9000
if you declare __slots__ on a class it's pre-declaring those members, and by default it forbids creating more members (within that class -- child classes are fair game)
21:35:18
SAL9000
awwww... "Multiple inheritance with multiple slotted parent classes can be used, but only one parent is allowed to have attributes created by slots (the other bases must have empty slot layouts) - violations raise TypeError."
21:43:57
Shinmera
New function, client.send_callback allows you to pass a callback function that'll be invoked with the old update and the response.
21:49:48
Shinmera
I suppose more convenient behaviours could be easily built atop like only callback if error or something.
22:23:55
SAL9000
Shinmera: you're not checking from on updates before doing the callback processing, though?
22:33:19
SAL9000
Shinmera: I just realised, if the backlog uses ids of messages as originally sent (by the user who requested the backlog), that will cause spurious callbacks...