Jake wrote:It's true that Ren'Py is mature, in that it's core functionality is mostly stable and PyTom doesn't get carried away adding billions of barely-tested unnecessary features. It's also true that it's a pretty good bit of software in a lot of ways, I wouldn't try to dispute it. But it's frankly daft to use the fact that a lot of people use it to suggest that it must be the best way of doing things, because there just haven't been any other real ways of doing things until recently.
I will argue that Ren'Py is a local optimum. I made several decisions relatively early in the process, and Ren'Py reflects those decisions:
- Ren'Py is textual.
I believe people are more productive in a textual environment than a graphical one, especially when writing dialogue and control structures. The textual environment also makes things like positioning images very repeatable:
show eileen happy at left
will always show Eileen at the same place, whereas a more graphical environment might make it easier to position her a few pixels off. (This could be solved by snapping as well, but perhaps with a loss of flexibility.)
Finally, a textual language lets us leverage existing tools, like text editors, spell checkers, and source control systems. This means that we don't have to reinvent these tools from scratch each time.
- Ren'Py includes Python
Every program grows until it includes a scripting language. This is especially true of visual novel engines, since visual novels and dating sims are fundamentally programs. The alternative view would be to see them as documents. But once you start getting control flow that branches based on variables, I think it's incorrect to think of them as documents.
Once you decide to include a scripting language, there's a choice between writing your own and using an existing language. Reusing an existing one has a lot of advantages, as it means that you can leverage quite a bit of existing work.
For example, Python ships with a very nice sort algorithm. That's something that people probably wouldn't include in a VN-specific scripting language, but there are cases where it can be used with VNs. (For example, one can sort a list of characters to find the one with the highest affection score.)
What's more, existing scripting languages tend to be thoroughly debugged, which can help.
Finally, there was the choice of language. I like Python, which is why I picked it. Ren'Py could have easily been Ren'Perl, Ren'Ruby, Ren'Lisp, Ren'Scheme, or Ren'Javascript... although I probably would have picked a different name in those cases. Javascript (which I understand KiriKiri uses) would have been an interesting choice, in retrospect.
(I'm not going to claim that I thought very hard about language choice back when I made Ren'Py. Python was certainly good enough, and I had been using it enough that I didn't run through other choices.)
I think it makes sense to have some unity between the scripting language choice and the script language. So Ren'Py naturally took on a Python-like syntax.
Now, that doesn't mean that Ren'Py is perfect... far from it. And there will be quite a few language changes in the next few months, to make things like image positioning and movement easier. But I do think the core language is basically sound, and so I don't think it needs to be redone from scratch, but rather carefully evolved.
(And honestly, I still don't get this must-be-on-iPhone fad. The only people I've seen with iPhones have been the kind of pretentious tossers you'd never see stooping to trying a VN...)
iPhone users buy software. (As opposed to pirating it.)