Category Archives: Development

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.

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

A certain green robot

Pdf

Work’s been crazy. I’ve got to add PDF support to our reader-ish commercial app – and it’s one hell of a mess on Android.

About the only decent solution I’ve found is muPDF – but it’s GPL. We could buy a commercial license of course – there’s an option for that – but given our focus on selling customized versions of our app this might prove to be financially impossible. Swing’s pdf-renderer, while fairly decent, produces a lot of creepy artefacts instead of text in a lot of documents and a significant amount of work must be done to support CMYK in its Android version.

And given that there’s only one GPL library that works well and even most of shareware libraries have their own issues (no outlines and acid-colored CMYK in Qoppa, barely usable androidpdf.mobi and so on) it seems unwise to develop an in-house PDF renderer.

Honestly, at this point I’d consider porting Pdf.js to Java. Not like it’s a realistic solution, but if all else fails…

 

Google + Samsung

The biggest news this week was the 10-year patent deal between Google and Samsung that is essentially going to unite the efforts of two giants in regards to Android. Which means Google will focus on Samsung hardware, possibly killing off its Nexus line down the line – which is a pity since many great devices were adapted for it with a reasonable price-point in mind – and Samsung will focus on Android and likely Chrome OS, contributing to the development of the former and cutting most ties with Microsoft over Windows laptops and Intel over Tizen.

In case of Microsoft they seem to have an Android patent dispute – since Microsoft holds enough patents to make money from almost every Android device on the market – and Samsung wants to drive them off the mobile market altogether out of spite. Not like Microsoft is a significant player, with only two left, but still. Samsung doesn’t have the same kind of animosity towards Intel, but they have their own chips to sell so we’re likely to see more and more Exynos-powered devices in the years to come.

I didn’t intend to make a digest of the articles analysing the subject, but if I skipped that my concerns would look out of place. The state of the mobile market is dangerously close to ending up just like the state of the desktop for decades. A grand unrivaled alliance in the form of Samsungle, much like Wintel of the past, and Apple offering an alternative. Apple’s market share will inevitably fall, but will yet again remain high enough to matter, though most trends will probably be set by Samsungle.

That leaves us with no place for any third party. And that is a sad state of things as both iOS and Android have their fair share of issues that, while largely irrelevant to the general consumer, make them not as attractive for the smaller audience of “power users” to which I think I more or less belong. That said, Android might end up becoming just as good as Windows in five to ten years, but during that time the only hope I have is that the Wintel crowd will keep producing awesome things like the Surface Pro. Since there’s nobody who will be able to deconstruct the established market.

The chance for the likes of Ubuntu Touch, Tizen, Sailfish and others to take off seems to be largely gone, and only Windows Phone might or might not keep their minor share, depending on how well Microsoft does in other areas of its business. This might be for the good of most people, but really disappointing for me.

 

Yunodroid

Just as a side note, I do intend to bring Yuno to Android as a C++ or a D library, I’ve started that one a long while ago and after I get some experience with actual games I’m considering making a “once and for all” framework. The one issue I’m struggling with, except for the lack of experience in coding shaders, is the script subsystem. Once I figure that out – I’m really interested in creating a VN/SRPG framework, that being one of my favourite game genres. First of all though – the platformer that’s long overdue.

I just have to let go of the complicated design thoughts first and start with a simple rectangular dude jumping on simple square tiles…

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.