Making some progress on the Saescript, a kind of retarded API for VN dev. I can’t figure out some of the architectural issues I haven’t thought about, but there’s thankfully a certain hack that helps me out with some of those. I’m clearly doing it wrong, but since I hardly manage to squeeze out ten lines of code per day lately, gunning for the simplest solution.

I’m using Yuno’s “actions” (animation thingies) as a core for the script – every frame is basically an action, and an action can be a block of simultaneous actions or an ordered sequence of actions – enabling some limited directing gimmicks. An action (that is not a block or a sequence) is usually either a simple affine/alpha animation or another timed event like, say, the typewriter-effect text. Theoretically it can be anything, but in practice it’s kind of difficult to use anything more than that right now. The warning signal came when I realized that I can’t quite define an action in advance because there’s nothing for it to act on at ‘compilation’ stage (I’m trying to do an API here that can be replaced with a script down the road). The character sprite, for instance, can have many states and the action can’t know in advance which one will have to be animated, that’s something only the ‘executor’ would know.

Hence, for now I’ve extended actions with a “future target” that will acquire the object only when the action has to be executed. Whoever creates the action is responsible for subclassing this FutureTarget and telling it where to look for the object. This is probably a pretty retarded hack because there’re of course more things that can only be known at runtime, such as dynamically changing animations and things like that, so I’ll probably have to resort to a dynamic action builder thing that I can’t even imagine right now. Thanks to Dart being awesome I have a cure-all “field” animation that can animate an arbitrary field – which makes a lot of things easier – but ideally I’d have to think of a solution that will be “C++”-able.

We’ll see. First things first, finishing this early prototype. I’ve written more sentences here than lines of code in Dart Editor today.



It didn’t quite go smooth, but I have my laptop intact and almost fully functional again!

The crisis with my gadgets was going on for a long while, and for the last weeks it was pretty severe, but for now it’s averted at long last. New phone, patched up laptop, internet didn’t fail me for a while.

Which means that I don’t quite have a convenient excuse for doing nothing again. I might always be too late, but there are things I must finish despite not meeting any reasonable deadlines.

Sort of not dead yet


All right, I might’ve been working at work and playing Super Heroine Chronicles a bit too much. Neither is easy since the former is obviously work and the latter requires my brain to overload due to reading Japanese, which I am very, very bad at.

I might review the game whenever I finish it (not soon, plus I’ll take a break to get some coding done) and my new phone, the octa-core Zopo ZP998 a.k.a. ZWX 9520. First impressions on which are the following: unless you go x86, you’re not likely to get a better 10-bit anime player phone, but it has some flaws otherwise, most importantly due to a shoddy firmware that Zopo has promised to fix.

Speaking of work, we have this massive project where we’re pretty much making a native Android/iOS app generator for publication-related businesses and others who might need publishing lots of things (think Conduit, but less versatile yet much better at the specific things it does). Insane things happen every day when we’re building infrastructure for that… Spent most of the day making a Ruby server for the build subsystem to use with an already existing C# client/coordinator thing, wrote the actual thing in an hour, but figuring out how to format Ruby data into whatever data formats Microsoft decided to use was a pain in the ass. LEP128, endianness, things like that. These things make me annoyed and bored to be honest, but sadly necessary from time to time.

So… yeah.

Oh, and the laptop is still broken, I’m afraid that the screen will fall off completely before the new lid arrives, that would be a damn shame. Gotta hold out for two more weeks or so…

Title broken

> phone broken
> laptop hinges broken
> internet broken – thankfully is back online
> tablet broken for two months already but it makes the list more complete

Dammit, what is even going on. 

I’ll probably never make any money from gamedev so a new laptop alone is going to be one hell of a spend. I’m getting a mid-tier phone and I’m not getting another tablet, but nevertheless… Granted, my laptop requirements are pretty high end, but I can’t settle for an underpowered machine again (and for the umpteenth time) after using a desktop replacement for three years. It’s a 15-16″ FHD machine with a good CPU and discrete GPU or bust.

No progress

Headache day, YAH MAN.

That said, I sketched out a simple static script API that is sort of extendable later to accomodate some more dynamic things and an actual script parser if it comes to it, so I have something to implement tomorrow more or less. I wish I could have done this today, but alas.

Also spent more time than I should have looking for a new phone since mine is on the brink of death. A lot of my tech seems to be in that condition these days since I haven’t upgraded anything for years, almost a decade with some – including said Motorola EM30.



Made some animation action support, along with sequences and blocks (simultaneous actions) and a shorthand to use all of that mess, so now I can do things like this:

new Sequence()
  ..add(new Block()
    ..field(c2, #alpha, 0, 1, 3500)
    ..field(c2, #x, 32, 732, 7000))
  ..field(c2, #alpha, 1, 0, 3500);

Why do I need all that for a simple VN API (yes, I’m not going to parse a script right now, just making an internal DSL for simplicity’s sake, much like Ren’Py 1)? Pretty much these things:

  • Things like “first I want that character to change pose with fade, then I want the other one to change pose with fade while he starts speaking”;
  • Easier skip and rollback – as long as I keep track of each sprite position and other parameters I can just run or finalize actions whenever I need to skip or continue from a given script “line”;
  • If I’ll have to parse a script later, the execution tree will pretty much consist of actions and branching points – for something simple that seems fairly adequate.

And I’ve started writing said VN API, SaeScript, though didn’t make much progress yet.


Temporary genre swap

We’ve decided to make a short kinetic webnovel first, so I refocused my efforts on making a simplistic dialogue manager. We’d need it sooner or later anyway, of course.

Going to use a simple simultaneous and sequential action/animation scheme. I’ll probably make it as an API first (internal DSL style), don’t really want to bother with parsing scripts and there’d be no practical use for that at this point.

As for progress, I was mostly fixing some bugs yesterday and being annoyed at Dart Editor’s overreliance on symlinks, which are kind of a bother to work with in Windows, especially when you have to actually distribute your web app. I could duplicate the resources of course, but that’s also annoying.

This might have just worked…