N1RV Ann-A Devlog 1: Moving Forward

There’s a saying in Venezuela that goes “Flojo trabaja doble” which roughly means “Lazy people end up working twice as much” (in one of the rare instances where the english version is longer than the spanish one), this saying usually goes to those situations where not thinking ahead ends up causing you to work more in the long run.

And while “lazy” is not the right word in this context, it is the right general idea, since for the first devlog we want to describe our focus moving forward, the lessons learned in VA-11 Hall-A that are already showing up in N1RV Ann-A and NEXT GAME.

I say “Lazy” isn’t the right word because some of the choices we made weren’t made out of a wish to work less, but rather a rush to get things done. But just like how love and hate, even if opposite, are driven by the same level of obsession; our rush to work, even if the opposite of laziness, was driven by the same lack of foresight that an effort to do less work entails.

A good way to understand that drive is to see how Kirby’s Adventure on the Game Boy was coded on a Famicom Twin with no keyboard. You get in a trance where you wanna get things done so hard that you put up with anything in order to do it. But when minds cool down and you gotta go back to that thing, you’re greeted by an honest-to-god unbearable mess.

So what do I mean with this? Well let’s start by looking at VA-11 Hall-A’s scripts.

Hello darkness, my old friend…

Since we were in that mindset of “we have no time for other stuff”, the idea of making tools to make life easier never actually crossed our minds. So the process of making a VA-11 Hall-A script was something like…

  1. Write the script in a word processor with spellchecking. Keeping in mind the “tabs” (The points labeled [E:X] on the script).
  2. Copy all of the script into a notepad.
  3. Now change all ellipsis, quotation marks and other symbols that are actually unicode versions of those symbols and the game can’t recognize them (We actually had a notepad with all the symbols we had to replace so we could just find and replace them with notepad) (It’s also why *Kira* Miki isn’t stylized as Kira☆Miki even though it makes the most sense).
  4. Now start adding all the individual line breaks by hand. In order to do this we had the notepad window fit the width of how many characters should be on each line and then added # at the start of each line, editing any line that went over three.
  5. After that we started replacing lines. For example run a full Find and Replace on “Jill:” to turn it into “[XS:jilltalk,1][C:13]Jill:[C:C]”.
  6. Finally, we used an online text tool and added “[STOPLIP:]” at the end of all lines. Originally all characters had their own “stoplip” command, but the use of an universal one proved not only more efficient in our burning trash can, but also more stable in the long run, since when skipping text sometimes characters would keep “speaking”.

After this, came the hard-coded part of everything. In VA-11 Hall-A the text framework we used didn’t have a built-in branching function, the most it had was a choice menu that… we couldn’t really use. To circumvent this, I made it so when the game detected that the text box was destroyed, it would check on the game’s state. If it needed to mix drinks it would bring up the mix menu, if it needed to end the shift it would do so, but if it needed to continue a dialog after it branched it would check a script to know where to go. Moreover, after you press the Serve button it would check on yet another script to know what dialog to show and this would bring the whole system to the previous loop.

Donovan actually set the pace of how to properly do this flow. His first order of asking for yet another beer if you only give him a regular one wasn’t “dialog, post-mix dialog, dialog, post-mix dialog” but rather “dialog, post-mix dialog, post-mix dialog” which, among other troubles, meant that his order couldn’t be set like all others but had to be set through a command made just for that specific order to be set during the post-mix dialog rather than in the hard-coded part of a regular branching.

This motherfucker is annoying even on a meta level, amazing.

And some of you might be wondering why not just edit the scripts, this brings up the next problem with the scripts. Editing them was in one word: awful. And in two words: FUCKING awful.

Not only was our work process so messed up that the idea of going through it for small fixes was effectively dreadful, the way the text framework handled everything didn’t help either.

For context: The way the framework picks a point in the script to load is using tags labeled [E:X] where X is a number that starts at 1 and increases with each new tag… however I quickly discovered that the number on said tag was more of an aid for the programmer than an actual function. Basically, if I made tags 1, 3 and 4; and told the game to go to tag 3, it would go to what I see as 4, since it counts the amount of tags rather than look for the indicated number.

What this means is that if I wanted to add the Donovan text to the proper flow, I’d have to add it in between other text, which also means editing every other tag in the script (E:50 becomes E:51 and so on) and do that same thing in the other hard-coded scripts. Which is not only a pain, but also a delicate thing to work with. Changing that many things at the same time brought up lots of bugs during development.

You can, in fact, find dialogs that we HAD to add to the scripts last minute and they’re at the tail end of the script because it was the easiest way to add them. And even then they became annoying when it came time to translate since the translators would find a random misplaced line at the end of the script. Far away from its original context.

Not to mention the fact that, since it wasn’t our framework, we didn’t understand the components making it move, meaning that expected functions like saving in the middle of the day or the choice to only skip dialog you’ve seen couldn’t be added because we either didn’t have the skill to add them or the skill to understand the inner workings of the framework well enough to see if it was possible to add them in the first place.

So to every single person that over the last two years have derided the game’s lack of said functions because I “don’t respect their time”, I say that if I was really spiteful of you all, you would have known it without a doubt. I’m not exactly a subtle person.

It might seem like I’m dragging the framework we used on the dirt but… I’m not. It is a great system, the most flexible I’ve seen in the game maker storefront and it definitely gave us the kickstart we needed… it just showed its cracks when under our particular situation.

And the funniest part of this tirade is that I’ve only talked about the dialog system so far.

The other bone-headed decision we made with the game was making text inside textures. That means that things like the blogs and recipes are images with the text rather than text generated by the game.

It all started when we wanted to have a certain features made by a certain point, chief among them Jill’s tablet. The text wasn’t acting like we wanted it to so to get quick results we just made it an image, then did the same with the blogs and recipes and we effectively screwed ourselves over.

Any fix to the text meant that we had to open photoshop (a fate that I wish to no person on god’s green earth) to edit it, export it, and add it to the game. Which by itself was annoying enough (since it added an extra step in another program to something actually simple), but the real problem came along when it came time to make translations.

For you see, we didn’t think ahead about translations. We expected the game to sell 10k copies on its lifetime and then move on to our “big project”. Never in our wildest dreams did we think the game would have the success it did and that support for other languages would be needed… and this meant that a lot of code had to be somehow reworked to fit that.

But we also had the textures with text on them, and sadly we’re not the most organized people so a lot of time went into remembering where the heck we left those files in the first place. When I say that we didn’t expect to come back to VA-11 Hall-A after release I mean it. We dropped everything to look into what we’d do next.

Doesn’t mean that I’m not grateful of how things turned out of course. I wake up every day counting our blessings and moved by the support that we’ve been given. But of course the pain of getting back into doing anything for VA-11 Hall-A is still a bit of a sore spot.

And I’m not even getting into stuff like that one time I accidentally deleted a Dorothy sprite that Chris labeled “DO NOT DELETE” because he didn’t know where the original was, or that time that some sounds got the wrong name and what was supposed to be a page turning sound ended up as a whole completely different one killing all the mood of the ending, or how messy the endings are organized in the code…

If I make it sound like VA-11 Hall-A is held together by string and tape… is because it is. When VA-11 Hall-A started I knew jackshit about programming, having the bare basics of if conditions from using Ren’Py and nothing else. Combine that with the rush to get the game done by yesterday and not only did it take a couple of years away from my lifespan (not counting the two years it took to be developed), but means that the game never saw some actual much needed refactoring.

In fact, in the current state of N1RV Ann-A, VA-11 Hall-A was not only already announced for release but also on the rush to get all the content ready.

So the current state of N1RV Ann-A basically goes along the lines of refactoring the code with everything we learned from getting the demo for TGS ready and finishing up tools that will make the grind for content actually bearable and fun (while also finishing up the planning of said content). If VA-11 Hall-A’s development was fueled by a hot-blooded effort to make a living out of whatever scraps we made with the game, N1RV Ann-A’s development is fueled by a cool-headed effort to not relive the same pain that was VA-11 Hall-A’s development as a whole. Now everything we make we do thinking five steps forward and keeping in mind that we might be able to reuse it in the future.

So that’s where we stand right now. On the next devlog we’ll talk about the dialog framework. How it’s done, what we learned from past mistakes and so forth.

And to keep these devlogs in line with the first ones we made way back when, let’s highlight a character! This month’s character is Parka.

She was shown in the demo we had at TGS. Parka is not her real name but rather her alias. She’s a controversial artist looking for inspiration. Inspiration for what? You’ll have to wait until the full game to find out.

Also, let’s keep answering the questions we got back in June, why not. We keep our word, even if late.

We all lose.

As you can see in the blueprint articles, characters are usually inspired by many people we’ve met, but no specific person. It’s also more on the lines of adapting a thing we need from experience in real life rather than lifting it straight from it without rhyme or reason.

There are a couple of cases where characters draw straight from a real person, but in those cases it’s more of a knowing nod between us and said person instead of something we bank on.

18 thoughts on “N1RV Ann-A Devlog 1: Moving Forward

  1. I fell in love with the story, characters and the world of Valhalla. I know Microsoft it’s pretty bad sometimes but it’s a shame that the game isn’t coming to the Xbox One 🙁 Any reasons for that?

  2. I fell in love with the story, characters and the world of Valhalla. I know Microsoft it’s pretty shitty sometimes but it’s a shame that the game isn’t coming to the Xbox One 🙁

  3. Be careful with a second-system syndrome. Tools are useful indeed, but you must always question whether the time to build them will pay off in the future. That said, Va-11 Hall-A would probably have benefited from some good tools 😉 keep up the good work

    1. *Cuts another finger off* “Yep, cutting these vegetables on a table saw… now, not looking into new tools – this is the one I have and I have to chop these vegetables!” *cuts yet another finger off*

  4. I’m also VERY stoked to see the other 3D game! It looks really interesting and even if it’s completely different from VA-11 Hall-A I still feel like the portrayed mood comes together very nicely. (I’m a sucker for the aesthetic)

  5. When is simulation game taking place in Seito University Hospital where you combat the Bugster Vi- Okay, never mind.

    I do really look forward to more blog posts like these and the ‘behind the character’ bits. They’re always super intriguing even when the info is little!

Comments are closed.