Category Archives: Dart

Sae

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.

Advertisements

Progress

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)
  ..run();

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.

Tagged

Comvoy no nazo

The catgirl clearly likes shiny things. What do you know, I actually wrote thirty more lines of code.

Another short-lived demo here.

If you’ve never played Mystery of Convoy, now is the time. Or just go watch AllieRX’s review and Arino’s Game Center CX challenge.

Tagged

Progress

I don’t like how WordPress doesn’t let me pick categories in all of its “New post” forms except for the furthest one in the dashboard panel..

Anyway, this link will likely be dead before anyone reads this post, but hooray, sound works in non-IE browsers (will have to use another sound thingamajig most likely, I was naively thinking that Web Audio API is an HTML5 standard everyone conforms to), I can more or less track loading of the resources and write text and whatnot, so in general the framework in its simplest configuration seems to be mostly usable.

Next, spritesheets, sprite animations and Tiled maps support. With that done I will be actually able to start planning the game logic. Not exactly on a Ludum Dare schedule here, but this is my first foray into Dart and into front-end web script development in general.

Progress

Set up a simple entity tree with zooming and rotation. Also added sprite, audio, deferred loading (since there is about no other way of loading things in web dev, it seems) and input support – to a really simple extent – but I will have to debug it later today, I’m not sure how much of that actually works.

The fact that the compiled source code is already over 200 kilobytes is also bothering me. But hopefully libraries take up most of that, and a single music track will probably take more anyway.

Y U NO Dart?

Attempt #42 at running a personal blog, and this time I’m not going to repeat my past mistake in making a generic introductory post that is going to discourage me from making any more contributions in the long run. So let’s keep this short, amateur coder, wannabe game developer, anime fan with ambitions regarding drawing cute girls one day and possibly making robots. Preferably of the small and cute variety, with big eyes and samples from a professional voice actress.

After a long hiatus I’ve been, thankfully, coerced by Eonhite into going back to making games, this time with a firm resolution of actually finishing something small rather than making another worthless grand design. He’s making all of the art so I don’t have to worry about straining my nigh nonexistent creative muscles in the slim hopes of drawing something less creepy than Chinatsu’s drawings. So, with good art guaranteed, we’ve decided on a simple web-based platformer game.

Yep, cool sprites guaranteed. Though I’m not sure whether it’s a guy or a tomboy. Latter preferred. Eonhite a great.

Which sent me into a panic at first, because I never made anything for the web more complicated than an almost script-less news site, and even then I’ve focused more on the backend, with Ruby and Sinatra as my indispensable assistants. And I didn’t want to do Flash, no thank you, anything but Flash. Though I didn’t want to do JS either because I have a hard time understanding that mess.

Thankfully a while ago I learned about the existence of Dart which promised a decent language that can compile into Javascript. Decent as in something that’s not just covering some of Javascript’s flaws and verbosity like (Iced)Coffeescript, but actually something looking like a normal run of the mill imperative programming language. I’m used to the common C++/C#/Java/Ruby kinds of languages, so it was a huge relief to find out that Dart is really similar to those while adding some nice syntactic sugar.

dart_hello_node

The official IDE is a very simplified and significantly cut down Eclipse, but hey, it works pretty well.

To get done with this quickly, one thing I didn’t like was a kind of iffy library/import system that pretty much makes the whole library a single unit and requires you to explicitly list all files it contains. You also have to state that a file is a part of said library in the file itself, but it’s not unlike namespacing so that’s all right, I guess. Another thing is this pubspec.yaml-based build system, it’s simple, but I have a general distrust towards build systems constructed around downloading things from the internet by themselves. That said, neither of these complaints bothers me really, I’m just nitpicking.

As for the language itself, it’s basically Java with syntactic sugar and a few functional niceties like making passing around anonymous functions really easy. I’m not quite used to the Future concept yet, but it seems to be prominent in front-end languages for the web so I hope writing my own ones shouldn’t prove difficult either, it seems easier to use those rather than creating specific delegate classes.

So, yes, in short I’m making another version of my silly 2D game framework, Yuno, in Dart. For now using a Canvas, but I might switch over to webGL later, it seems to be similar to normal openGL. Once I figure out sound and fonts I’m going to add support for Tiled-made maps and will start making the actual game, though I’m still not quite sure what kind of gameplay is there going to be other than walk-ish things and jump-ish things. It’s a bit of an experiment.