Essential features for EVEN: a new visual novel engine

For discussion and support of other visual novel engines.
Message
Author
merak
Regular
Posts: 41
Joined: Sat Feb 15, 2014 6:09 am
Contact:

Essential features for EVNE

#31 Post by merak »

It's great that you are motivated to make a new game engine. I'm going to give some response to your question but more to things you didn't ask but which I think shall be useful to you.

An essential feature is to not use WebGL because it has been and still might be a security hole which allows your screen to be viewed remotely -- not only what you are viewing in the browser, but your entire screen. This is because implementations hook it as directly into OpenGL as possible for ease of implementation probably, but also without protection it is faster.

To anyone who would serve this to users, you should deliver anything with active content, such as JavaScript, over a secure connection. It is sensible to only permit your browser to run JavaScript for pages retrieved over a secure connection.

As far as "Very high performance (thanks to WebGL and JIT-compiled JavaScript)", your application would be the first 'very high performance' JavaScript application I have ever seen. I doubt any very high performance large JavaScript application exists. Typically, there is little need for VN engines to be fast.

If you want something which
  • can be run by starting from a WWW browser, without installation of the game
  • is faster than JavaScript
  • more robust than a WWW browser application
then use Java Web Start, which requires no plug, or there are other languages which require a plug. If you program with Java Swing, then the application can run in a securely contained virtual machine (VM) which can not escape the VM to access the user's computer and over the network can only make connections back to the server from which it was loaded.

Pretending EVEN is an acronym when it is not is evil. It is better to use an initialism than to do that. Otherwise, come up with something which is an acronym rather than initialism.

User avatar
2dt
Regular
Posts: 110
Joined: Wed Jan 08, 2014 12:43 am
Contact:

Re: Essential features for EVEN: a new visual novel engine

#32 Post by 2dt »

DaFool wrote:Regarding Construct2 integration, since the action stages will be in separate layouts from the VN stages, perhaps the save system in the VN portion can already take care of the save system of the whole game?

For example, while playing an action stage there is no need to save, but once an endpoint trigger is reach it goes to a VN layout that asks "Would you like to save your game?" and it only needs to remember the variables pertaining to the particular story branch while ignoring the variables used in the action gameplay sequences.

Perhaps it's straightforward to call up a VN window even within the action stage but then that goes into inventory and all that... much more complicated.
Yes you could do that. EVEN (or I guess I should call it EVNE now? since according to merak I'm "evil")'s scenes can be built as GUI with event handlers. You could program those event handlers to write save data (and I will include template code that shows how to do that).

The most logical kind of save data that I would write would serialize information using JSON. It's simple, easy for JavaScript to read/serialize, human-readable, self-describing, and universally portable. Of course, if you want do inventory it gets a bit more complicated, but not so much so. First ways that come to mind are: serialized arrays of objects describing each item/weapon or serialized arrays of item IDs referencing some sort of pre-established item dictionary. The latter makes much more sense. Or a combination of both, depending on how sophisticated items are.

Finally, as for Inventory GUI in EVNE, I've yet to thoroughly investigate it, but theoretically it wouldn't be too difficult. After I'm done with my NaNoRenO entry I'll get to work on researching these things.

Please tell me more about how you'd like to use EVNE into a hybrid action/VN game. It's a fascinating exercise in design to see how those two can be implemented together. Plus, I bet there are a lot of people wanting to do something similar.
wulfae wrote:While the GUI interface was pretty cool, I also really like being able to just read through my script easily. What would be helpful, and perhaps an easier first step, is a 'live feed' of just what you're programming, or something that you could update in the corner of your screen. I admit I haven't got very far in the actual art process of my game, but I am worried about keeping everything straight. It would be wonderful if I could set up a scene, type stuff up, and reload my render to see how it looks and plays in the particular screen I'm looking at. Maybe ren'py can do that, but it more seems like it makes a game for you to play through, which could take a little while to get to the exact screen I want.

I guess the solution is to make a chapter list a the beginning, haha. Why didn't I do that earlier?
My goal is to have an editor that can change the game in real-time. So you won't have to constantly reload the entire game or keep skipping until you reach a particular scene. You'll just edit it on the spot.
merak wrote:It's great that you are motivated to make a new game engine. I'm going to give some response to your question but more to things you didn't ask but which I think shall be useful to you.

An essential feature is to not use WebGL because it has been and still might be a security hole which allows your screen to be viewed remotely -- not only what you are viewing in the browser, but your entire screen. This is because implementations hook it as directly into OpenGL as possible for ease of implementation probably, but also without protection it is faster.

To anyone who would serve this to users, you should deliver anything with active content, such as JavaScript, over a secure connection. It is sensible to only permit your browser to run JavaScript for pages retrieved over a secure connection.

As far as "Very high performance (thanks to WebGL and JIT-compiled JavaScript)", your application would be the first 'very high performance' JavaScript application I have ever seen. I doubt any very high performance large JavaScript application exists. Typically, there is little need for VN engines to be fast.

If you want something which
  • can be run by starting from a WWW browser, without installation of the game
  • is faster than JavaScript
  • more robust than a WWW browser application
then use Java Web Start, which requires no plug, or there are other languages which require a plug. If you program with Java Swing, then the application can run in a securely contained virtual machine (VM) which can not escape the VM to access the user's computer and over the network can only make connections back to the server from which it was loaded.

Pretending EVEN is an acronym when it is not is evil. It is better to use an initialism than to do that. Otherwise, come up with something which is an acronym rather than initialism.
Thanks for taking the time to write this out. Admittedly, I don't really agree with a lot of your advice.

For WebGL security: every graphics technology has had that kind of exploit at some point or another. Virtually all the information regarding the particular exploit I think you're talking about dates back to mid-2011, regarding the tech community's response to the ContextIS Reports. Since then, every major browser vendor has actively encouraged the use of WebGL, including Microsoft, once WebGL's biggest opponent on the basis of security.

For JavaScript security: I can't recall the last time I heard of a scare involving JavaScript malware. Modern JavaScript engines go through great pains to isolate every JavaScript thread into their own little virtual machine-ish kinds of settings, preventing JavaScript from messing with the system. Every major browser comes with JavaScript enabled by default. Every major website uses client-side JavaScript heavily. Still, I'm sure anyone who chooses to distribute EVNE over the web will take the same server-side precautions as anyone else.

For high performance: depends on your definition of high performance. If you're comparing JavaScript to native C/C++, then of course it's slower. EVNE can animate thousands of sprites simultaneously, all with their own hardware accelerated image filters and transforms at 60+ FPS. If that's not high performance then I really don't know what is.

You say there's no need for VN engines to be fast. But that doesn't mean they have to be slow either.

For Java Web Start: this I really don't get. Can Java Web Start run in any major smartphone other than, say, Blackberry? (iOS/Android/Windows Phone)? Can it be embedded into other browser based games? Or even other games in general? Does it have support for touch facilities on all modern devices? If not, then it doesn't fit the requirements for this project. Also, saying it doesn't require plugins is pretty misleading, considering it runs OUTSIDE the browser, requiring a separate runtime to be installed. Finally, it's not commonly used for 2d games, and it's proprietary software, making it a non-starter for the target programming audience.

For the EVEN acronym: I guess I'm evil then. ;) But in all seriousness though I kinda agree. I've going back and forth on this issue for some time. I'll probably just change it to EVNE, and phonetically refer to it as 'even'.

Again, thanks for taking the time to write. Also, if you happen to want to continue this conversation further (I don't, to be honest), please PM me, as I don't want to derail this topic.

merak
Regular
Posts: 41
Joined: Sat Feb 15, 2014 6:09 am
Contact:

features for EVNE

#33 Post by merak »

2dt wrote:I can't recall the last time I heard of a scare involving JavaScript malware.
I don't develop with JavaScript and yet I've heard of a few in the past year. I think the last one was set up on TOR, there's an entry in the Mozilla Bugzilla if you want to seek it out. The entry did not mention TOR last I saw. There were some cross site scripting type ones also.
2dt wrote:Still, I'm sure anyone who chooses to distribute EVNE over the web will take the same server-side precautions as anyone else.
The precautions everyone else takes varies from reasonable to none, so it is worth informing them of the most basic of precautions. It would be beneficial to many to have something addressing security in the documentation of EVNE.
2dt wrote:Can Java Web Start run in any major smartphone other than, say, Blackberry? (iOS/Android/Windows Phone)?
I don't know much about smart phones, but I'll share what I know. Android basically runs a somewhat compatible Java, so maybe it does. iOS and MS Windows share a code base with their desktop OS, so they might. It might be that Web Start is not available, but Java otherwise is. There are profiles for Java Micro Edition (ME) and a phoneME. Oracle writes "Java is currently running on over 3 billion phones".
2dt wrote:Can it be embedded into other browser based games?
Yes, as an applet. There is an interface between Java and browser JavaScript, also.
2dt wrote:Or even other games in general?
Yes. The easiest is when those other games are written in a language which runs on the Java VM. For most platforms, integration or embedding is easier than JavaScript. There are many more programming languages which can interface with Java than JavaScript.

If you change the name to Embeddable Visual Reading Engine, it can be EVRE pronounced like "ever". That would be pronouncable english, just like litre, theatre, etc. That would be perturbing the word choice to make it an acronym.

At the end of your message, you say you don't want to continue the conversation at the end of your message. If you wrote it at the beginning I might have spared myself the effort of writing. As for writing to the thread: if you write to the thread in response to me, you can't expect me not to write to the thread as well. It is impolite to request that I not also write to the thread. It was polite to thank me for the time I took on my previous message.

User avatar
Sharm
Miko-Class Veteran
Posts: 558
Joined: Mon May 07, 2012 4:39 pm
Projects: Twin Crowns, Weather Wizard
Contact:

Re: Essential features for EVEN: a new visual novel engine

#34 Post by Sharm »

Now hold up, Merak. This thread is a "how do I improve the engine I'm currently working on" and from what I can tell you've basically said "throw out everything you've done so far and program it all in my favorite language". I'm not a programmer, so a lot of this stuff is going over my head, but I can see why 2dt isn't interested in continuing a conversation about that. Restarting from scratch isn't an option at this point.
Works in Progress: Twin Crowns | Weather Wizard

AxemRed
Veteran
Posts: 482
Joined: Sun Jan 09, 2011 7:10 am
Contact:

Re: Essential features for EVEN: a new visual novel engine

#35 Post by AxemRed »

Neither Java Web Start, nor Applets are available on Android/iOS. Then again, I don't think WebGL works on their default web browsers either. The only relevant part of WebGL security concerns is that they might slow down or stop WebGL adoption.

>EVNE can animate thousands of sprites simultaneously
Do you have a demo (or video)?

Asceai
Eileen-Class Veteran
Posts: 1258
Joined: Fri Sep 21, 2007 7:13 am
Projects: a battle engine
Contact:

Re: Essential features for EVEN: a new visual novel engine

#36 Post by Asceai »

From a security standpoint I'd be a lot more worried about Java, if that's a concern here. Remember when everyone was getting infected with malware through Java drive-by attacks not that long ago? Only a matter of time before Oracle drops the ball again and their track record isn't the greatest.

User avatar
2dt
Regular
Posts: 110
Joined: Wed Jan 08, 2014 12:43 am
Contact:

Re: Essential features for EVEN: a new visual novel engine

#37 Post by 2dt »

AxemRed wrote:Neither Java Web Start, nor Applets are available on Android/iOS. Then again, I don't think WebGL works on their default web browsers either. The only relevant part of WebGL security concerns is that they might slow down or stop WebGL adoption.

>EVNE can animate thousands of sprites simultaneously
Do you have a demo (or video)?
Hacked together a quick demo using our favorite Fiend and Boy. The demo is 2000 sprites each scaled randomly, moving in random circles around, and tinted randomly every frame. You can't really see all 2000 of them because they're piled randomly on top of each other, but they're there. In the video you'll see the task manager "nw" program, using like 4 mb of memory, consuming almost no CPU power. Needless to say, this wouldn't be possible without WebGL. Sorry for shitty video quality.

https://onedrive.live.com/redir?resid=D ... deo%2c.mp4

EDIT: made a mistake, forgot about the subprocesses node-webkit spawns, so in actuality it consumes about 40 MB of memory, and uses about 4% of CPU power.
Last edited by 2dt on Tue Mar 04, 2014 3:50 am, edited 1 time in total.

User avatar
DaFool
Lemma-Class Veteran
Posts: 4171
Joined: Tue Aug 01, 2006 12:39 pm
Contact:

Re: Essential features for EVEN: a new visual novel engine

#38 Post by DaFool »

2dt wrote: Please tell me more about how you'd like to use EVNE into a hybrid action/VN game. It's a fascinating exercise in design to see how those two can be implemented together. Plus, I bet there are a lot of people wanting to do something similar.
I'm thinking of something like Muramasa Rebirth. Out of all the Vanillaware games I've played (Vanillaware since they're considered the gold standard in 2D games), it was this Vita game that had just the right system for me. The others were kinda unintuitive is some ways in terms of game design and logical flow. This video shows going through inventory (with forging) and then a conversation scene before a boss battle. I'm thinking a VN/GUI engine will make easy work of the interface:


Just something to aspire to, I'll be satisfied with even just a subset of the features.

User avatar
sendo
Veteran
Posts: 290
Joined: Sun Sep 01, 2013 2:28 am
Completed: To Libertad, Diamond Rose, SC2VN, Sickness VN
Projects: eroges!
itch: sendo
Contact:

Re: Essential features for EVEN: a new visual novel engine

#39 Post by sendo »

2dt wrote:Hacked together a quick demo using our favorite Fiend and Boy. The demo is 2000 sprites each scaled randomly, moving in random circles around, and tinted randomly every frame. You can't really see all 2000 of them because they're piled randomly on top of each other, but they're there. In the video you'll see the task manager "nw" program, using like 4 mb of memory, consuming almost no CPU power. Needless to say, this wouldn't be possible without WebGL. Sorry for shitty video quality.

https://onedrive.live.com/redir?resid=D ... deo%2c.mp4
Okay, now that's amazing!! :D Now I'm more excited to see the engine in action ^^ Btw, since this is WebGL, will EVEN allow full 3D?
and ahhh Sublime Text is just a beauty ^^
Finished VNs:
Image Image

User avatar
2dt
Regular
Posts: 110
Joined: Wed Jan 08, 2014 12:43 am
Contact:

Re: Essential features for EVEN: a new visual novel engine

#40 Post by 2dt »

DaFool wrote:
2dt wrote: Please tell me more about how you'd like to use EVNE into a hybrid action/VN game. It's a fascinating exercise in design to see how those two can be implemented together. Plus, I bet there are a lot of people wanting to do something similar.
I'm thinking of something like Muramasa Rebirth. Out of all the Vanillaware games I've played (Vanillaware since they're considered the gold standard in 2D games), it was this Vita game that had just the right system for me. The others were kinda unintuitive is some ways in terms of game design and logical flow. This video shows going through inventory (with forging) and then a conversation scene before a boss battle. I'm thinking a VN/GUI engine will make easy work of the interface:


Just something to aspire to, I'll be satisfied with even just a subset of the features.
Ok thanks for that. I'll keep that in mind. The text dialogue and cutscenes will be a piece of cake. For the inventory, that's very doable as well. The tricky part would be coming up with formulas to position all the different branches of items.
crestforge wrote:
2dt wrote:Hacked together a quick demo using our favorite Fiend and Boy. The demo is 2000 sprites each scaled randomly, moving in random circles around, and tinted randomly every frame. You can't really see all 2000 of them because they're piled randomly on top of each other, but they're there. In the video you'll see the task manager "nw" program, using like 4 mb of memory, consuming almost no CPU power. Needless to say, this wouldn't be possible without WebGL. Sorry for shitty video quality.

https://onedrive.live.com/redir?resid=D ... deo%2c.mp4
Okay, now that's amazing!! :D Now I'm more excited to see the engine in action ^^ Btw, since this is WebGL, will EVEN allow full 3D?
and ahhh Sublime Text is just a beauty ^^
WebGL is used purely to accelerate 2d drawing. I have no plans for 3D right now, as I still have my hands full with 2D at the moment. However, I designed the system to be expandable to 3D if I ever get around to it.

Sublime Text is fantastic, but I think the author's kinda stagnating a bit. I'm a bit worried about Sublime's long term future.

User avatar
fioricca
Veteran
Posts: 333
Joined: Fri Feb 19, 2010 3:17 am
Completed: Rising Angels Reborn (2013), Rising Angels Fates: Allegiance (2017)
IRC Nick: souten
Contact:

Re: Essential features for EVEN: a new visual novel engine

#41 Post by fioricca »

I am so excited about the iOS compatibility, you have no idea. *_* I don't code at all so most of the stuff in this thread flew over my head, but The Dolls' Stories, a game I created, had like... dynamic panel things (comic-book cutscenes?). As an artist who's generous with visuals, it's important for me to be able to display visual elements nicely with transitions such as slide, shake and so on. Support for simple animation such as clouds or lip-flap would also give more power to me. Finally, a gallery script that's easy to customise and support for mobile/touch controls (we're having a problem with Ren'py, we can't flick/swipe so I had to include left/right buttons...) are also things I'm interested in.

Can't wait to see a demo of this engine! This engine looks incredibly promising so good work!

User avatar
2dt
Regular
Posts: 110
Joined: Wed Jan 08, 2014 12:43 am
Contact:

Re: Essential features for EVEN: a new visual novel engine

#42 Post by 2dt »

EDIT: I also started a thread for my NaNoRenO entry that will showcase this engine. Follow it here.

fioricca wrote:I am so excited about the iOS compatibility, you have no idea. *_* I don't code at all so most of the stuff in this thread flew over my head, but The Dolls' Stories, a game I created, had like... dynamic panel things (comic-book cutscenes?). As an artist who's generous with visuals, it's important for me to be able to display visual elements nicely with transitions such as slide, shake and so on. Support for simple animation such as clouds or lip-flap would also give more power to me. Finally, a gallery script that's easy to customise and support for mobile/touch controls (we're having a problem with Ren'py, we can't flick/swipe so I had to include left/right buttons...) are also things I'm interested in.

Can't wait to see a demo of this engine! This engine looks incredibly promising so good work!
I actually just started playing Doll's Stories, so feel free to reference certain things in the game to see if it can be done in my engine. Thus far, most of what I've seen can be done quite easily, including the transitions, slides, and shakes etc...

Some things I'm not so sure. Could you explain the "dynamic panel things"? Also, what do you mean by "simple animations such as clouds"? Lip flap is more a matter of animating a string of lip sprites, (like a sprite sheet), which can be timed according to the text thanks to EVEN's looping changes.

User avatar
sendo
Veteran
Posts: 290
Joined: Sun Sep 01, 2013 2:28 am
Completed: To Libertad, Diamond Rose, SC2VN, Sickness VN
Projects: eroges!
itch: sendo
Contact:

Re: Essential features for EVEN: a new visual novel engine

#43 Post by sendo »

2dt wrote:WebGL is used purely to accelerate 2d drawing. I have no plans for 3D right now, as I still have my hands full with 2D at the moment. However, I designed the system to be expandable to 3D if I ever get around to it.
Fair enough :) Yes, a solid 2D engine is really important. It's just there's been interest with integrating 3D with VN for gameplay/navigation, like 999 and 3d dungeon crawlers.
2dt wrote:Sublime Text is fantastic, but I think the author's kinda stagnating a bit. I'm a bit worried about Sublime's long term future.
Yeah I wouldn't like Sublime to stagnate like TextMate. But atm Sublime provides me with all the features I need.
Finished VNs:
Image Image

User avatar
fioricca
Veteran
Posts: 333
Joined: Fri Feb 19, 2010 3:17 am
Completed: Rising Angels Reborn (2013), Rising Angels Fates: Allegiance (2017)
IRC Nick: souten
Contact:

Re: Essential features for EVEN: a new visual novel engine

#44 Post by fioricca »

2dt wrote:Some things I'm not so sure. Could you explain the "dynamic panel things"? Also, what do you mean by "simple animations such as clouds"? Lip flap is more a matter of animating a string of lip sprites, (like a sprite sheet), which can be timed according to the text thanks to EVEN's looping changes.
Oh, that's wonderful! :D And what I meant by comic book cutscenes are stuff like this. I also meant animation like clouds floating/moving in the sky, or other such atmospheric animation... sorry I wasn't clear. Looks like this engine supports everything I could ever want from an artist's perspective so I'm even more excited for it!

User avatar
2dt
Regular
Posts: 110
Joined: Wed Jan 08, 2014 12:43 am
Contact:

Re: Essential features for EVEN: a new visual novel engine

#45 Post by 2dt »

fioricca wrote:
2dt wrote:Some things I'm not so sure. Could you explain the "dynamic panel things"? Also, what do you mean by "simple animations such as clouds"? Lip flap is more a matter of animating a string of lip sprites, (like a sprite sheet), which can be timed according to the text thanks to EVEN's looping changes.
Oh, that's wonderful! :D And what I meant by comic book cutscenes are stuff like this. I also meant animation like clouds floating/moving in the sky, or other such atmospheric animation... sorry I wasn't clear. Looks like this engine supports everything I could ever want from an artist's perspective so I'm even more excited for it!
I won't be implementing cutscene panels initially, but later on once the other more important features have stabilized.

Cloud animations would be a matter of animating movement of a group of cloud sprites. So yes, It can be done quite easily.

Post Reply

Who is online

Users browsing this forum: No registered users