Sunday, 30 July 2017

About the next release

Hi all,

The next release will be out tomorrow. It focuses on adding support for written scene submissions.

In what should be an unsurprising turn of events to anyone who's followed my predictions in the past, it seems I've been massively over-optimistic about how quickly I could write the documentation for this. My plan was to put out a test version to a small group mid-month, rattle off the documentation in a few days and then get seriously stuck into improving infidelity mechanics.

Instead, I'm 83 pages into the two main reference documents with more to write for them and several further pieces of documentation still not started. As such, infidelity will have to wait and I might have to rush out a first draft of the overall writing and syntax guides.

From a developer POV this is a quite productive release: there's 2 scenes (the custom scene processing one and the test scene), the example mini-scene, the aforementioned mountain of documentation, and a few small bits and pieces.

From a player's POV though, there's very little to benefit them in 0.4.10 - there aren't any actual player-submitted scenes in the game yet and I don't anticipate getting serious submitted content in the first month while people are getting used to how it works and I'm still making improvements.

So, I guess what I'm getting at, is that if you've been considering making a pledge on Patreon then it might be better to hold fire until 0.4.11 comes out, at least unless you're extremely keen to start work on your own written content.

I'll make some blog posts soon with overviews of how key aspects of submission writing will work. This will mostly be drawn directly from drafts of the documentation so I'll be keen to see what people think - I'll want to look out for common questions and make sure the docs cover them.


In the meantime, I have one question for you to ponder: which free YML editor would you recommend? I've been using a plugin for my IDE that has nice syntax highlighting and that really makes it a lot easier to write. It isn't reasonable to expect writers to use a Java IDE when they aren't even coding in Java though, so it'd be handy if there was a good free editor I could link them to in the documentation.

15 comments:

  1. Notepad++ would be a good baseline editor, but there are a couple of others. Github Atom is another text editor that could work.

    And an idea to consider might be to release both a public and patron version of 0.4.10, that way your patrons can have their benefits while both sets of people have access to the scene creation stuff.

    Your call though.

    ReplyDelete
    Replies
    1. Thanks! I'll put links to both in the documentation.

      It's a good idea I think to put out 0.4.10 ahead of the 0.4.11 release. Perhaps in a few days time - I feel like the patrons need some sort of early-access even for this one!

      Delete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Replies
    1. Thanks. I'll put a link in the documentation

      Delete
  4. SO, few question.
    I may be misunderstanding what your post is saying, but what I'm reading is that you're going to be approving user-submitted content, and that's what's going to be added into the game. Is that true?

    If it is true, then I guess I'll have to ask why that was your decision.

    If it isn't true, then does that mean any user-submitted content, whether or not they're submitted to you, will work in the game, or is there some kind of special process to insert the custom scene in?

    ReplyDelete
    Replies
    1. Well, I wrote a reply, but it seems there's a character limit on blog posts, so I'll split it into two:

      Delete
    2. The custom scenes system is a way of allowing players to submit content for inclusion in the game. It isn't an attempt to allow proper modding. To effectively support modding a game really needs to be designed with it in mind.

      Essentially this is an equivalent for Newlife to the approach developers like Fenoxo have for allowing submissions. In fact, I think that the Newlife version goes a bit further in that it lets scenes be actually run in-game with the testing scene - I believe that Fenoxo's approach is to ask people to upload written content into a google document for their developers to add to the game.

      My original plan was to have something similar: pseudocode submissions which I'd convert into Java scenes. After discussion with a few people I decided on a more heavyweight approach with the in-game test structure. This will make it a little harder to maintain those scenes and means a lot more upfront work, but I feel that letting people run their scenes before submitting them will greatly help with their quality, especially in terms of bugs.

      Of course custom scenes are just a pair of files (currently a YML and an XML one), so a player can share their work for other people to try out in the testing scene that way. It cannot be fully integrated into the game though, not without my intervention to ensure its preconditions are met and connect it up to the Java code.

      There are two reasons for this:

      The first is technical: it's difficult to imagine how 'mod-style' additions could work without converting the entire set of existing scenes into yml/xml format, which would be a terrible idea.
      Imagine a player writes a new date activity like the sex-shop or the adult-theater. This needs to be accessed from the date scene, which means new actions need to be written in that existing scene, potentially ones that touch on internal scene mechanics (such as which date activities have already taken place) or which have multi-stage access methods such as giving the PC an opportunity to reject an NPCs invitation. I'm not sure how this would even be reasonably possible - put hooks in at every stage to check if a player requested custom content be inserted there? That doesn't seem like a practical solution.
      Sub-scenes can split off from pretty much any scene at pretty much any place. That simply isn't realistic to write an API for: the only way I could imagine it working is the full-mod approach where all of Newlife's content is in a moddable format and there's a proper mod system handling things like partial replacement of files, multiple mods changing a single file and so on. This is neither feasible nor, in a game where the developer also does the writing, desirable.
      It would be way, way out of scope for the game in its current state. Essentially, Newlife was not written with the expectation that I'd release it online, let alone that other people would want to contribute, and as such it's fundamentally incompatible with the sort of modding that highly mod-friendly games like CK2 support.

      The second reason is to give an incentive for people to actually submit their work so that other players can benefit from it. This is something I'm acutely aware of because it's sort of a fluke that Newlife ever got released online at all. If my previous project hadn't failed it would certainly never have left my hard-drive.
      Now, this probably wouldn't be enough of a reason if the first wasn't already an insurmountable barrier, but it's an advantage to consider: requiring my intervention to add content to the game means more will be submitted instead of just made for the writer's enjoyment and never shared.

      Delete
    3. There are a few downsides to all this. The main one is of course that a writer won't get to 'properly' play their content if I reject it. This mostly won't affect anyone but the unlucky writer though. If a scene is incomplete or if I reject it on quality grounds then I doubt other players would want to use it. If I reject it because the writing-style clashes with mine badly enough that it seems out of place then the scene wouldn't be a good match in Newlife and the writer would be best off releasing it as part of their own game or as a short-story or CYOA.
      The situations where a submission would have worked better as a mod are fairly restricted. The main one is where I reject it on content grounds. However, this probably won't be especially common: I know they have their devoted advocates but most of the things I wouldn't want added are either extreme niche fetishes (snuff, scat, blood, torture, necrophilia etc) or are so obviously unsuited to the game that I can't imagine anyone would submit them for Newlife instead of a different game (fantasy races, aliens, succubi etc).

      Many niche fetishes that I'd block are also very morally dubious, legally questionable or socially unacceptable - I need to consider the OPA when I add stuff to the game. Furthermore, as the game's developer I can't assume anonymity forever - I may at some point need to discuss Newlife in job interviews or the like. Even via mods I really wouldn't want a potential future employer to find that my game's a big deal for fans of, say, child-sex or neo-nazi torture porn. I know I get a lot of hate on some sites with large followings of darker fetishes, but there are already a ton of games out there focusing on extreme content, so I think it's a bit silly for them to be so angry at it not being included in mine.

      Delete
    4. Now, I am a bit sympathetic for fans of things like watersports, scat and so on - fetishes that aren't morally questionable but which I wouldn't accept, either because I personally find them distasteful enough that I don't want to read, edit and maintain that content or because I think most players would find them very unpleasant.
      In the long run I may open up options to allow them to be integrated a bit more than via testing, although it will never be feasible for them to have the full range of integration available to content that I work on adding myself.

      I have had a few thoughts on how it might be possible. One option might be to enable integration in certain very limited ways. Sub-scenes would definitely be impossible, but a way of defining a custom scene to show up as a random event might not be, although it'd likely be quite challenging to implement a way of defining event pre-conditions (such as which traits an NPC needs to show up for it) and having them be handled automatically by the game. For testing custom scenes currently just define the number, gender and ID of each NPC and lets the tester choose an appropriate one from the full list - that'd obviously need to be handled in the API instead if they were to be playable without my intervention.
      A second approach would be to have a 'placeholder' scene that players can enjoy by itself, but which can be replaced by a more extreme version. This might be a way of finally getting a solution to nonconsent content. As well as being potentially a bit risky under the OPA, this is something that I often have requested but I also often get people asking me not to add. A solution I think might work well would be to have a scene similar to the lowlife one, but which players could choose to replace with some sort of non-consent scene that's written and distributed by someone other than me but which could be a 'semi-official' addon that I could link to from the blog.

      None of this is suitable for the initial release though. There's a ton of complexity in the custom scene content - as the size of the documentation should make clear. I'll need to refine and improve it based on writer feedback, probably over the course of multiple releases as people get more familiar with it and start trying more ambitious additions. The real end-game for custom scenes is getting to a stage where I'm comfortable commissioning major scenes as paid work from writers. Enabling better handling of niche content for a minority of players is quite a low priority in comparison.

      Delete
    5. Wow, that seemed an awful lot shorter in notepad...

      Delete
    6. Ah, I understand. Thanks for giving me such a detailed and extensive explanation on this stuff.

      Delete
  5. This comment has been removed by the author.

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. User-submitted scenes need to be self-contained scenes. They can't be modifications of existing content as this isn't implemented using the same system.

      User content can't be such that it'd demand substantial changes for existing scenes and it especially can't be "complexity" changes such as adding new variables, traits, relationship types etc that would need to be handled in all future ones.

      As will be very clear when the documentation is avaiable publicly, Newlife's internal mechanics are very complex and there are many, many variables that need to be considered in writing.
      That need for large amounts of alternative text means there's usually dozens of lines of code & writing for every line that gets shown to the player. Adding more complexity is therefore something I try to only do if it's of great importance to the game. It certainly isn't something I'll be taking from user submissions.

      Some key questions in writing:
      - Am I adding something that would need to be handled in other people's content?
      - Am I adding something that would demand changes to game mechanics?
      - Am I adding something that will make other scenes feel weird unless they're modified/rewritten to support it?

      If the answer to any of those questions is yes then your submission is unlikely to be accepted.

      There are some workarounds for certain specific situations, but these won't always apply. Height is an example that probably won't work in custom content because it would need the player to pick a height for the PC, which is something that would then need to be handled throughout the game.

      An example of something that might work: Consider a writer who has a fetish for men with giant beards. S/he wants to write that sort of content, but existing scenes don't handle facial hair.
      It would seem weird if there was a scene that defined an NPC as having a huge beard and had lots of special beard-related content, but the character's facial hair was then never mentioned again in other scenes. As such, it wouldn't be acceptable to write a beard-fetish scene and just connect it up for any NPC to access.
      However, it would be ok to write a special NPC that only appeared in these beard scenes. The writer could then put in all the beard content they want and it wouldn't clash with other parts of the game because the only giant-bearded NPC would be one that only appears in their custom content.

      Delete