Tuesday, March 8, 2011
1000000 blog hits!
One million blog hits. That's actually kind of a scary realization.
Thank you for reading so far.
- Aura
» Discuss this post on the forums
Monday, March 7, 2011
If You Want Something Done
Sup guys, delta here. It's been a while since I wrote a blog post, so it's about time to get technical once more.
Visual novels, seen as computer programs, don't have a lot of "features" you really need to think about. There may be slight differences, but all in all they're really similar as far as user experience goes; and that is perfectly fine, since they are not wildly dissimilar things to begin with - "visual novel" already pretty much defines the experience. In fact, one reason you would use a pre-existing VN engine is that they come with the full feature set you would expect from the medium. VNs are not the most difficult things to program but in a field so narrow there is little reason to reinvent the wheel. However, that does not absolve a developer from thinking about what they are doing. A lot of design decisions in the VN user experience are like they are by convention, and convention are not necessarily right (or wrong) - if the developer decides that they don't want to live with the usual, they can and should do it the way they want regardless what the engine or convention says.
One of these features is "some way of rereading text you have already read". This has to be possible in some way, and there are indeed conventions about how to do that. The method I have seen in most VNs is to show a backlog in list form that you can scroll up or down, or page through. Ren'Py, the engine we are using, solves the problem in a different way, which is calls "rollback" (and the method described above is described as "readback" in contrast to that). Rollback lets you "roll back" the whole interpreter state to a previous point. This is definitely the technically superior method, and a lot harder to implement, and it's one of Ren'Py's selling points. The reader can not only read the prior text, but they also get context - the whole screen, with character expressions, sounds, animation, everything.
Now there is a problem with that - out of the box Ren'Py supports only this method, and developers want choices. The reason for this can be manifold; maybe they want an "authentic Japanese feel" to their game. Maybe there is some narrative reason for doing it a different way. And more importantly (for me), Ren'Py rolls back the entire interpreter state, discarding any player input that happened prior, including choices. This is where a design decision comes in - what does read/rollback actually mean? Ren'Py assumes that the engine is just a tool to display the game to the player and leave as much choice open to the reader as possible - a "reader application" as opposed to a designed experience. An argument frequently brought up in favor of rollback is "the reader can just save and restore the game, you surely are not not going to forbid that too?" In my opinion, that is not a valid argument. For starters, yes, a game designer may decide to indeed forbid what is called "save scumming" in more general video games. KS does not do this, but there may be narrative or other reasons that nobody has yet thought of for it (As an aside, KS also includes a tweaked save/load system, because by default Ren'Py works with a "slot" system directly lifted from Japanese VNs, which in turn lifted it from battery-backed NES games. Not something entirely contemporary, so KS uses a system that Source games ca. 2004 use - hooray for at least living in this century)
What it comes down to is this: I consider the text backlog in KS a form of protagonist memory, and memory is immutable. When you roll back, you don't "roll back an interpreter", you retread what you have already seen. This implies not being able to redo choices. Sure, you can still save and reload, but saving and reloading is a far more conscious, weighty thing, a lot less casual than just scrolling your mouse wheel.
Whatever the reason is, there is no reason to restrict the game developer just because something is "inherently superior". It's like saying that you should not make a film in black and white when color is available. Restricting the player interaction can be a design goal, for whatever reason, and if the developer wants to do that they should be able to. And while Ren'Py does not offer any other method of backlogging, it is open and flexible enough to allow custom solutions.
Act 1 of KS included a custom implementation of readback of my own design. It still allowed rollback (because it is indeed a nice thing to have), but it blocked rollback after choice points, yo you could never roll back beyond a choice. That way, you could not change a choice you had previously made, and if you wanted to access the text displayed before rollback was blocked, you had readback available. I never found this completely satisfactory, because it was an obvious crutch. I felt that the version I want was full rollback without the ability to retake choices. So I went and did that.
The solution is slightly elaborate and I won't go into all details here. I'll just say that what makes this hard is that Ren'Py has no concept of a "per-playthrough" memory independent of rollback, which is exactly what this is all about. It just has the "store" (which stores per-playthrough data, but also gets completely rolled back), and "persistent" (which does not get rolled back, but is global for an installation of a game). I ended up generating a unique ID at the beginning of each playthrough and save it in the store, then using this ID as the index in a database of values that is stored in persistent. Not actually all that complicated, but it was still something I had to think up and implement. It may not even end up being the thing KS eventually ships with, but it had to be done to be evaluated. So the lesson here and the reason I am writing this up is, think about what you want and at least try it out. Don't let yourself be limited from the start by what the engine or convention says, even if it's just in a small way that may not matter to anyone but you. Don't do something because everyone's doing it, but be ready to pick and choose the best from conflicting approaches. And in the end, maybe you will come up with something that is "better" or at least more fitting than either.
At least until everyone dislikes it and it's back to the drawing board.
P.S. Aura was faster with the art but climatic wanted to be part of it as well. So here's his effort as a reward for reading all the way to the end.
— delta
» Discuss this post on the forums
Visual novels, seen as computer programs, don't have a lot of "features" you really need to think about. There may be slight differences, but all in all they're really similar as far as user experience goes; and that is perfectly fine, since they are not wildly dissimilar things to begin with - "visual novel" already pretty much defines the experience. In fact, one reason you would use a pre-existing VN engine is that they come with the full feature set you would expect from the medium. VNs are not the most difficult things to program but in a field so narrow there is little reason to reinvent the wheel. However, that does not absolve a developer from thinking about what they are doing. A lot of design decisions in the VN user experience are like they are by convention, and convention are not necessarily right (or wrong) - if the developer decides that they don't want to live with the usual, they can and should do it the way they want regardless what the engine or convention says.
One of these features is "some way of rereading text you have already read". This has to be possible in some way, and there are indeed conventions about how to do that. The method I have seen in most VNs is to show a backlog in list form that you can scroll up or down, or page through. Ren'Py, the engine we are using, solves the problem in a different way, which is calls "rollback" (and the method described above is described as "readback" in contrast to that). Rollback lets you "roll back" the whole interpreter state to a previous point. This is definitely the technically superior method, and a lot harder to implement, and it's one of Ren'Py's selling points. The reader can not only read the prior text, but they also get context - the whole screen, with character expressions, sounds, animation, everything.
Now there is a problem with that - out of the box Ren'Py supports only this method, and developers want choices. The reason for this can be manifold; maybe they want an "authentic Japanese feel" to their game. Maybe there is some narrative reason for doing it a different way. And more importantly (for me), Ren'Py rolls back the entire interpreter state, discarding any player input that happened prior, including choices. This is where a design decision comes in - what does read/rollback actually mean? Ren'Py assumes that the engine is just a tool to display the game to the player and leave as much choice open to the reader as possible - a "reader application" as opposed to a designed experience. An argument frequently brought up in favor of rollback is "the reader can just save and restore the game, you surely are not not going to forbid that too?" In my opinion, that is not a valid argument. For starters, yes, a game designer may decide to indeed forbid what is called "save scumming" in more general video games. KS does not do this, but there may be narrative or other reasons that nobody has yet thought of for it (As an aside, KS also includes a tweaked save/load system, because by default Ren'Py works with a "slot" system directly lifted from Japanese VNs, which in turn lifted it from battery-backed NES games. Not something entirely contemporary, so KS uses a system that Source games ca. 2004 use - hooray for at least living in this century)
What it comes down to is this: I consider the text backlog in KS a form of protagonist memory, and memory is immutable. When you roll back, you don't "roll back an interpreter", you retread what you have already seen. This implies not being able to redo choices. Sure, you can still save and reload, but saving and reloading is a far more conscious, weighty thing, a lot less casual than just scrolling your mouse wheel.
Whatever the reason is, there is no reason to restrict the game developer just because something is "inherently superior". It's like saying that you should not make a film in black and white when color is available. Restricting the player interaction can be a design goal, for whatever reason, and if the developer wants to do that they should be able to. And while Ren'Py does not offer any other method of backlogging, it is open and flexible enough to allow custom solutions.
Act 1 of KS included a custom implementation of readback of my own design. It still allowed rollback (because it is indeed a nice thing to have), but it blocked rollback after choice points, yo you could never roll back beyond a choice. That way, you could not change a choice you had previously made, and if you wanted to access the text displayed before rollback was blocked, you had readback available. I never found this completely satisfactory, because it was an obvious crutch. I felt that the version I want was full rollback without the ability to retake choices. So I went and did that.
The solution is slightly elaborate and I won't go into all details here. I'll just say that what makes this hard is that Ren'Py has no concept of a "per-playthrough" memory independent of rollback, which is exactly what this is all about. It just has the "store" (which stores per-playthrough data, but also gets completely rolled back), and "persistent" (which does not get rolled back, but is global for an installation of a game). I ended up generating a unique ID at the beginning of each playthrough and save it in the store, then using this ID as the index in a database of values that is stored in persistent. Not actually all that complicated, but it was still something I had to think up and implement. It may not even end up being the thing KS eventually ships with, but it had to be done to be evaluated. So the lesson here and the reason I am writing this up is, think about what you want and at least try it out. Don't let yourself be limited from the start by what the engine or convention says, even if it's just in a small way that may not matter to anyone but you. Don't do something because everyone's doing it, but be ready to pick and choose the best from conflicting approaches. And in the end, maybe you will come up with something that is "better" or at least more fitting than either.
At least until everyone dislikes it and it's back to the drawing board.
P.S. Aura was faster with the art but climatic wanted to be part of it as well. So here's his effort as a reward for reading all the way to the end.
— delta
» Discuss this post on the forums
Sunday, March 6, 2011
Hanako's Path Direction Complete
A one, and a two, and a three: Hanako's script and path direction is now complete!
That means that it's also art recap time for Hanako's art.
Hanako's art has, compared to the other characters, remained relatively stable. Since joining our art team in January 2008 alongside Moekki and Kamifish, Weee has been Hanako's artist and worked on her sprites and CGs since then. As can be seen in the above image, Weee also did a sketch of Hanako before joining, during the time that the game was in its brainstorming phase on the original now-defunct forums. She's been around for quite a while, with her art constantly improving (to the point where she has been selected to illustrate part of a Touhou doujin at Reitaisai 8! Go Weee (aka raemz at the site)!).
When compared to Raita's original design, Hanako is not too different compared to characters like Lilly and Shizune. In Ke^4's sketches, a lock of hair was added to cover the scarred side of her face to give a little uniqueness to her design, and her hair was lengthened. These have since become staples of her design. Her stockings were decided upon to be black, both due to Raita's sketch and to create a ying-yang contrast with Lilly's white stockings.
This touches on one aspect of Hanako and Lilly's designs; a desire for contrast. Not only are Lilly and Hanako very different people in personality, but their looks are used to further present their contrasting lifestyles. While Hanako is somewhat tall with a vaguely Asian beauty of long, dark hair, dark clothing, and a light frame, Lilly is taller, and fits a more Western type of beauty with long, blonde hair, fair skin, and blue eyes. Their expression sets, poses, and clothing all reflect their personalities and lifestyles.
And so, that's Hanako. Thank god Crud and I can stop writing her path now, and good job Delta on finishing the direction. Please look forward to Rin and Shizune's updates in the future.
- Suriko
» Discuss this post on the forums
That means that it's also art recap time for Hanako's art.
Hanako's art has, compared to the other characters, remained relatively stable. Since joining our art team in January 2008 alongside Moekki and Kamifish, Weee has been Hanako's artist and worked on her sprites and CGs since then. As can be seen in the above image, Weee also did a sketch of Hanako before joining, during the time that the game was in its brainstorming phase on the original now-defunct forums. She's been around for quite a while, with her art constantly improving (to the point where she has been selected to illustrate part of a Touhou doujin at Reitaisai 8! Go Weee (aka raemz at the site)!).
When compared to Raita's original design, Hanako is not too different compared to characters like Lilly and Shizune. In Ke^4's sketches, a lock of hair was added to cover the scarred side of her face to give a little uniqueness to her design, and her hair was lengthened. These have since become staples of her design. Her stockings were decided upon to be black, both due to Raita's sketch and to create a ying-yang contrast with Lilly's white stockings.
This touches on one aspect of Hanako and Lilly's designs; a desire for contrast. Not only are Lilly and Hanako very different people in personality, but their looks are used to further present their contrasting lifestyles. While Hanako is somewhat tall with a vaguely Asian beauty of long, dark hair, dark clothing, and a light frame, Lilly is taller, and fits a more Western type of beauty with long, blonde hair, fair skin, and blue eyes. Their expression sets, poses, and clothing all reflect their personalities and lifestyles.
And so, that's Hanako. Thank god Crud and I can stop writing her path now, and good job Delta on finishing the direction. Please look forward to Rin and Shizune's updates in the future.
- Suriko
» Discuss this post on the forums
Saturday, March 5, 2011
Premature Nostalgia
Is the journey more important than the destination?
I wrote the rather worn saying down, describing the development of KS. Then I started doubting its validity. KS has been a long and meandering journey, and we've done and come across a lot of stuff that's secondary to the development of the game itself. We have oekakis, fan arts, side projects a lively community that we try to participate in, plus our own insular circle in which we watch terrible movies over the internet or attempt to talk shop about the visual novel medium. What value can be placed to these secondary things, assuming that they don't directly bring KS closer to completion? Is it a waste of time to do KS-related things that are not developing KS, such as writing this blog?
As for the biggest secondary thing, I think the community, both 4LS's own and the greater KS community, are terribly empowering for the project itself. People often wonder how come the project hasn't died yet. It hasn't died because we are stubborn, but more importantly, it hasn't died because people care about it. Community is important.
Ultimately, the journey and destination are inseparable. Without that game release to aim for, we'd just be jerking around pointlessly, but after all the stuff that's going on, that release is a pretty sweet reward at the end of the road. One gives meaning to the other.
- Aura
» Discuss this post on the forums
I wrote the rather worn saying down, describing the development of KS. Then I started doubting its validity. KS has been a long and meandering journey, and we've done and come across a lot of stuff that's secondary to the development of the game itself. We have oekakis, fan arts, side projects a lively community that we try to participate in, plus our own insular circle in which we watch terrible movies over the internet or attempt to talk shop about the visual novel medium. What value can be placed to these secondary things, assuming that they don't directly bring KS closer to completion? Is it a waste of time to do KS-related things that are not developing KS, such as writing this blog?
As for the biggest secondary thing, I think the community, both 4LS's own and the greater KS community, are terribly empowering for the project itself. People often wonder how come the project hasn't died yet. It hasn't died because we are stubborn, but more importantly, it hasn't died because people care about it. Community is important.
Ultimately, the journey and destination are inseparable. Without that game release to aim for, we'd just be jerking around pointlessly, but after all the stuff that's going on, that release is a pretty sweet reward at the end of the road. One gives meaning to the other.
- Aura
» Discuss this post on the forums
Tuesday, March 1, 2011
Your Children Are Not Yours
I found this pretty strange rant about how fanfiction is an abominable thing, by a fairly popular author. I hadn't really thought about fan creations before, apart from whatever copyright issues we've had to handle. After thinking a while I found that it's actually a kinda strange phenomenon - but so is the whole fan phenomenon in the first place.
It's no secret that I am sort of bewildered by KS's popularity (and so are the rest of us) and that we tend to be sometimes uncomfortably - and maybe unwisely - honest about our uncomfortableness. But the fact remains: I absolutely did not expect to ever have to wonder about what I think about the fans of a work I created. I've never identified as a fan of anything and feel kind of distant from the phenomenon, but being in the receiving end is something really strange. I say that publically talking about this could be unwise because it could easily be interpreted as dislike of fans (which it is not, I like the fans more than the rest of 4LS, at least on weekends), especially combined with the notoriously short patience for stupidity many of us share.
Anyway, Hobb apparently is (or was, seeing as the rant is 5 years old and not up in the original location anymore) awfully hurt by the existence of fanfiction of her works. I can kinda see why, but I can't really agree with her position at all, plus I think the arguments she's refuting in the rant feel kinda handpicked. Fan creations have both pros - they engage fans more, creativity is never bad etc - and cons - they do violate copyright and whatnot. It all comes down to what weight one places on each of the effects and whether the sum comes up as net positive or net negative. So am I pro fanfiction or anti fanfiction? I suppose that's what I wanted to find out.
The first explanation is that fanfics are simply bad, and insulting to the original creator, or at least a majority are. I doubt the validity of this explanation but wanted to include it for later use. This blogpost counters the argument by presenting a huge list of acclaimed literature that could be classified as "fan fiction". Well, the definition has to be extremely broad, far more so than what I'm wlling to do, to call all of those "fan fics", but anyway. There is good fan fiction too, but it's true that fan fics do have a certain, somewhat negative general reputation surrounded by a thick coating of stereotypes.
A quick poll revealed that none of the irc regulars read KS fan fiction (okay one does but he is not straight in the head in many ways), but everyone visits our fanart imageboard more or less regularly. Why is this? The quality explanation is valid here, and most cited one: because most of the fan fics are bad. But so is most of anything, including fan art and non-fan fiction. Two things that fanfics have against them though: fan art takes a second or two to parse, reading a fanfic takes a long time and published fiction has a vetting system called "publishing". Anyone can post a fic they wrote on ff.net or our forums but to publish you need to meet the standards of your publisher. It's likelier that a book you bought is of greater quality than a random fic you are reading. Thus for the consumer, it's a simple risk/reward ratio analysis that makes them choose doing something else over reading fanfics, and also explains neatly why fanart gets an easier treatment than fan fiction.
But that still doesn't explain why Hobb is so angry, or why I am writing a stupidly huge blog post about this issue. I doubt Hobb cares whether fanfics are good or bad, and I don't read KS fanfics so the quality theory doesn't fit. Saying that fanfiction is bad because it breaches copyright is pretty weak in my opinion. Legislature only reflects morals, it doesn't dictate or explain them. From Hobb's rant I gather a sense of moral ownership that is breached when someone else uses (steals) her settings or characters. I guess that is a deeply subjective issue, how much a creator is attached to his or her creations probably greatly correlates with their opinion of this question. A creator feels that her work is something of her own, a personal aspect of herself, and gets offended at observed violation of that personal space. You can look, but you can't touch.
So the final question is, why does a creator care more about fan fiction than say, fan art? The quality argument, again, is false, and the sense of moral ownership should be as strong for both. I think it's because of the transformative characteristic of each. Art is generally only stylistically transforming of the original content, but fiction is by necessity a transformation of the content itself. As proof, delta suggested a hypothetical version of Katawa Shoujo's opening scenes, written by the great Kinoko Nasu. I thought the idea was awesome. He has a characteristic and... interesting writing style, I'd love to read that if it existed. Thus, a stylistically transforming fanfiction got my instant approval. So there's the answer to the art vs fiction question.
One thing where I think Hobb is absolutely on the money is that writing fanfics is a terrible way to learn to write. By writing a fanfic you bypass one of the most critical aspects of storytelling: making the reader give a fuck about your story. For a short story it might be convenient and you get an audience for free, but it teaches you awful habits and is NOT a stepping stone for becoming a "real" writer. Like copying artwork, you do learn some things though, so it's not like I'm saying that writing fanfics is a waste of time. But you are not gonna learn to build a house by thinking up new furniture. At any rate, creating fan works is most definitely leagues better than doing nothing at all, so by all means, do it.
As for myself, do I believe I have a moral ownership of the words I write? Maybe, but my words are not only mine. I read and hear things, ask for commentary, and find ways to put down words that I might've not thought of by myself. I reparse, reflect, repurpose and refer, I collect influences, I take what I can from the canon of writers before me, so it's only prudent to be willing to do my share of giving too. Besides, what do you care what I think?
- Aura
» Discuss this post on the forums
In case of trolls, read this post
Since it's the second time someone comes on our IRC, links a 4chan thread with posts from someone claiming to be one of 4LS and revealing "tidbits" about KS and asks whether it really is us holding a question and answer session, I thought I'd make some sort of pre-emptive reply you can refer to in the future:
If you believe anything said about the game or the project without verification, especially in a place like 4chan, you totally deserve to get fooled by a clever troll. We don't talk about KS or 4LS outside of our own blog/forums/irc.
If you believe anything said about the game or the project without verification, especially in a place like 4chan, you totally deserve to get fooled by a clever troll. We don't talk about KS or 4LS outside of our own blog/forums/irc.