Jump to content

Mikan Engine: ScummVM-like HTML5 VN engine to port everything to


mnakamura

Recommended Posts

A very cool idea overall! I was thinking of something along the lines. Can you publish any demo versions or whatever?

If you're concerned about copyright, you can just use some CC-licensed stuff like Katawa Shoujo or at least Ren'Py example novel, "The Question".

Where do you people discuss it? You've mentioned that you already work with some translation teams.

Link to comment
Share on other sites

13 minutes ago, tymmur said:

If we aim at names like that, then why not add support for Musumaker? The main heroine is called Mikan.

  Reveal hidden contents

It looks easy and fun to add support for right until you play long enough to encounter all the minigames.

 

I believe it would be next to impossible to implement in a *generic* HTML-based engine. Without *lots* of additional programming.

I'm looking at Nakamura's JSON format now — actually, there's nothing like "hot regions" there, or any possibility to interact with graphics at all => no buttons, no custom UIs, etc. And, as for counting stuff, there is obviously a Turing-complete functionality to do the counting (i.e. "var_set") and you can do conditional jumps, but there's no way you can output a variable anywhere - not to text dialogue, not to a image area, nothing.

Lots of games would require that. At least implementing "maps" with clickable areas should be first priority.

Link to comment
Share on other sites

37 minutes ago, Mad Pierre said:

I believe it would be next to impossible to implement in a *generic* HTML-based engine. Without *lots* of additional programming.

It was a joke. It is using a custom engine and totally not worth it to even attempt to run in a browser. Even without the minigames, it would be a quite difficult task with animated sprites, a million conditional jumps and math on the variable, as in real math, not just counters or flags. On top of that it has random number generation, something I wouldn't expect to see in a generic VN reader.

Link to comment
Share on other sites

3 hours ago, Mad Pierre said:

I believe it would be next to impossible to implement in a *generic* HTML-based engine. Without *lots* of additional programming.

I'm looking at Nakamura's JSON format now — actually, there's nothing like "hot regions" there, or any possibility to interact with graphics at all => no buttons, no custom UIs, etc. And, as for counting stuff, there is obviously a Turing-complete functionality to do the counting (i.e. "var_set") and you can do conditional jumps, but there's no way you can output a variable anywhere - not to text dialogue, not to a image area, nothing.

Lots of games would require that. At least implementing "maps" with clickable areas should be first priority.

But Mikan engine is not a closed source, so that's the whole point - to implement more features and support more games, right?

Link to comment
Share on other sites

30 minutes ago, Scorp said:

But Mikan engine is not a closed source, so that's the whole point - to implement more features and support more games, right?

Actually, I dunno. I've never ever seen that Cs'Ware before (or whatever they call themselves) — they run some open source engine? Kirikiri?

Link to comment
Share on other sites

20 minutes ago, Mad Pierre said:

Actually, I dunno. I've never ever seen that Cs'Ware before (or whatever they call themselves) — they run some open source engine? Kirikiri?

No, Mikan engine is that mnakamura HTML5 engine, he choosed that name, right?

C's Ware's Mikan is closed source, of course (maybe it have some relation to Entis engine, but seems scenario script format is unique). He would have to hack VM bytecode, find out what each of them does and create a decompiler/converter to make it working with his engine.

Link to comment
Share on other sites

13 hours ago, Mad Pierre said:

A very cool idea overall! I was thinking of something along the lines. Can you publish any demo versions or whatever?

If you're concerned about copyright, you can just use some CC-licensed stuff like Katawa Shoujo or at least Ren'Py example novel, "The Question".

Where do you people discuss it? You've mentioned that you already work with some translation teams.

Indeed, it is illegal to post links to copyrighted content on this forum according to the rules.

Katawa Shoujo is CC-NC-BY-ND, which is "no derivatives". I don't know if porting without change of contents would be considered derivative, but probably that's not a safe idea too.

Actually, it's a good idea to find something free to make a distributable demo of. "The Question" might be a good idea, I'll need to check.

There is no single "central" place for discussions (yet?), I discuss stuff with each team personally in a way they want it. That's forums, imageboards, e-mails, etc. Recently, Github project sprung up, that might be that "central" place you're looking for.

12 hours ago, Mad Pierre said:

I'm looking at Nakamura's JSON format now — actually, there's nothing like "hot regions" there, or any possibility to interact with graphics at all => no buttons, no custom UIs, etc. And, as for counting stuff, there is obviously a Turing-complete functionality to do the counting (i.e. "var_set") and you can do conditional jumps, but there's no way you can output a variable anywhere - not to text dialogue, not to a image area, nothing.

Lots of games would require that. At least implementing "maps" with clickable areas should be first priority.

Yeah, I'm aware of that. However, I want this functionality to be portable and useful too, i.e. so it could work on devices without a mouse / touch screen like consoles. So we should be extra careful implementing it.

And, yeah, we still need a VN that has map. I haven't found a good example yet. Any ideas?

12 hours ago, tymmur said:

It was a joke. It is using a custom engine and totally not worth it to even attempt to run in a browser. Even without the minigames, it would be a quite difficult task with animated sprites, a million conditional jumps and math on the variable, as in real math, not just counters or flags. On top of that it has random number generation, something I wouldn't expect to see in a generic VN reader.

"Real math" is not a problem (actually, it's not a problem with majority of engines I've seen), as well as "random" function in Mikan engine. But, yeah, it's exactly the point to keep Mikan engine high-level, without going GameMaker / Flash / Unity3D way.

Edited by mnakamura
Additional reply
Link to comment
Share on other sites

11 hours ago, Scorp said:

No, Mikan engine is that mnakamura HTML5 engine, he choosed that name, right?

C's Ware's Mikan is closed source, of course (maybe it have some relation to Entis engine, but seems scenario script format is unique). He would have to hack VM bytecode, find out what each of them does and create a decompiler/converter to make it working with his engine.

Damn, that already became confusing ;)

Judging from VNDB, Mikan is released in Windows era, so probably it shouldn't be too hard to run it in OllyDbg / IDA or something. It's not like debugging PC'98, DOS or PSP games — now that's the nightmare.

Link to comment
Share on other sites

3 hours ago, Mad Pierre said:

https://vndb.org/g297 - help yourself :)

There are lots of them, that's for granted. However, if I check out the top, it's mostly RPGs with minor VN element (Monmusu, Sengoku Rance, Kamidori), no pure VNs. Given that I haven't even heard the names of ~70% of the top50 list by popularity, I honestly don't even know which to start checking. Any advices on popular VNs with maps on relatively widespread engines like krkr2, BGI, Ren'py?

Link to comment
Share on other sites

An example of map movement in a VN with no other non-VN elements would likely be Da Capo. I remember the English version having actual map locations to click on, not just a row of buttons like in the screenshots of the Japanese version. My guess is that it is somehow a placement of a png at (x,y), which then works as a button and the VN script has a "read button click" command, but it would be hard to tell for sure without actually examining the script.

Link to comment
Share on other sites

1 minute ago, tymmur said:

An example of map movement in a VN with no other non-VN elements would likely be Da Capo. I remember the English version having actual map locations to click on, not just a row of buttons like in the screenshots of the Japanese version. My guess is that it is somehow a placement of a png at (x,y), which then works as a button and the VN script has a "read button click" command, but it would be hard to tell for sure without actually examining the script.

What engine does it run? Could you check?

Link to comment
Share on other sites

12 hours ago, mnakamura said:

And, yeah, we still need a VN that has map. I haven't found a good example yet. Any ideas?

Nocturnal Illusion (it runs on an engine which was reversed in VILE interpreter http://vilevn.git.sourceforge.net/git/gitweb.cgi?p=vilevn/vilevn;a=tree), Divi-Dead (I do not remember, but I think in github you can find easily engine reversed for Squirrel or like that. Or you can read my script extracted/reversed version, if this could be of any help, that's quite evident from it how maps were done ). I have a bunch of krkr2 VNs with map (like KnS, Fate HA), but I doubt they are good example.

Link to comment
Share on other sites

5 minutes ago, Scorp said:

Nocturnal Illusion (it runs on an engine which was reversed in VILE interpreter http://vilevn.git.sourceforge.net/git/gitweb.cgi?p=vilevn/vilevn;a=tree). I have a bunch of krkr2 VNs with map (like KnS, Fate HA), but I doubt they are good example.

That's exactly why I want to help this guy:

Given that all the reversing is done, it should be more or less trivial to write a converter.

Link to comment
Share on other sites

1 minute ago, Scorp said:

Oh. You know, I can do what he want for original version in no time. So no need to port.

What exactly do you mean by "original version"? Windows exe from '98? Good luck running it on any modern OS.

ViLE? It has a broken build and the project is basically dead. No docs, no nothing, written in really obscure C++. My best bet is that nobody will risk to raise it from the dead.

Link to comment
Share on other sites

Hey, @Scorp ;) I've spent a couple of hours on it yesterday (mostly figuring out where to get it and what ancient OS would I need to run it), here's what I've got as a disassembly of the first scene: http://pastebin.com/V7gvbCka

Nothing too bad, given that the engine is very dated and seems to lack most of fancy animations, transitions, etc. It seems that even sprites support is very simple - I haven't yet encountered a situation with 2 sprites on screen.

There would be a problem with sounds and music streams, as they are in cryptic beginning-of-00s format - that, in turn, probably would need reversing sound stream compression algorithms (most likely there's some kind of in-house lossy compression implementation).

Also, I've started to read the story, and, honestly, all this pseudo-horror stuff is a major turnoff for me. It's not like I'm gonna read it myself ;)

If anyone cares to see the demo, PM me.

Link to comment
Share on other sites

4 hours ago, Scorp said:

Nocturnal Illusion (it runs on an engine which was reversed in VILE interpreter http://vilevn.git.sourceforge.net/git/gitweb.cgi?p=vilevn/vilevn;a=tree), Divi-Dead (I do not remember, but I think in github you can find easily engine reversed for Squirrel or like that. Or you can read my script extracted/reversed version, if this could be of any help, that's quite evident from it how maps were done ). I have a bunch of krkr2 VNs with map (like KnS, Fate HA), but I doubt they are good example.

Wow, thanks for the suggestion! Your Divi-Dead reversing looks really cool :) What have you used it for? You have done a port / remake of an engine or what?

Link to comment
Share on other sites

Quote

43 61 00 00 00 07 00 00 03 e8 msg(seq_num=40 msg="……この時、呼ばれたような気がしたのは、きっと気の所為なのだと思う。")

Does not look right :) Seems still quite a lot of work there, if you really want to implement it, to figure out what everything does. Sound files are in IMA ADPCM format I suppose (as this is the codec which game uses to play sounds), so I think you just need to decrypt them.

I just wrote a simple script to extract the script. I was reading Divi-Dead last year (as forget almost completely all about it, last time I played was 15 years ago) and was very disappointed with absence of back log... So I digged out a bit and that's result.

Link to comment
Share on other sites

5 hours ago, Scorp said:

Does not look right :) Seems still quite a lot of work there, if you really want to implement it, to figure out what everything does. Sound files are in IMA ADPCM format I suppose (as this is the codec which game uses to play sounds), so I think you just need to decrypt them.

It's all about Pareto principle, as always :) 80% of work done in 20% of time, and now to get it actually working flawlessly one needs to spend 5x for time :)

Thanks for the hints on sound files. I'll try it now.

5 hours ago, Scorp said:

I just wrote a simple script to extract the script. I was reading Divi-Dead last year (as forget almost completely all about it, last time I played was 15 years ago) and was very disappointed with absence of back log... So I digged out a bit and that's result.

Now that's a determination one doesn't encounter often nowadays :)

By any chance, can I persuade you somehow to release the sources of your conversion script? If you do, I'll be able to do yet another converter to .story format and everyone could play your Divi-Dead conversion, with all the bells and whistles?

Link to comment
Share on other sites

2 hours ago, mnakamura said:

Now that's a determination one doesn't encounter often nowadays :)

By any chance, can I persuade you somehow to release the sources of your conversion script? If you do, I'll be able to do yet another converter to .story format and everyone could play your Divi-Dead conversion, with all the bells and whistles?

I can, but it do not have much meaning, as there is lot of real VM implementations around. For example this one: https://github.com/vnvm/vnvm So you can use it to inspect format and create your own implementation in .story.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...