Author Archives: Nolan

Project Exist 0.2.6b (1053)

Today marks the first 0.2.6b release. That’s important because I said so.

TL;DR:

Game Engine/UI:

  • PlaceholderX is now present in the engine, and is used.
  • We modified Shiz’s doublespeak – the version in this build can be found here.
  • An issue with Robert/Rin was fixed.

Rin: Happy Halloween

Oh. Hello.

I think that all of you have had your share of candy. Even though you haven’t really done anything to earn it. Perhaps I should make your insides disappear, and put the candy back where it belongs?

October is a strange time on the streets. The plastic werewolves and the orange lights come out of hiding. They don’t scare me, though. It’s easy to send things like them into the sky, and watch them fall… fall to the ground and crash into scattered colors.

What’s really strange though is how people behave. I wonder if sugar makes people angry? A man with a hood walked up to me and pointed something at me and started screaming… screaming about a van. But I didn’t know what it was. So I took his hand away.

As I held his hand in my hands he began to cry, holding onto his wrist. And I laughed. He wanted me to fear him, but now he feared me. Was it because of what was in his hands?

I held “it” the way he did, and pointed it at him. Then he howled, and that hurt my ears. I clenched my fists, and suddenly there was red.  A bright and crimson red. And he stopped… crying. The way to make people be quiet… this is what I learned this Halloween.

~Rin

Project Exist 0.2.5b

TL;DR:


All of Project Exist:

  • Implemented secrets.

Blog:

  • Now running WordPress 3.9.2
  • Various under-the-hood plug-ins updated.

Wiki1:

  • We mostly left Wiki1 alone.

Wiki2:

  • Added a ridiculous (12?) number of templates.
  • Finished Athena’s page.
  • Conceptualized the Project Exist page, which details Lawrence’s ulterior motives.

Game Engine/UI:

  • Wallet works slightly differently
  • Thorium made our wtf_iorpy_magic module safer.
  • wtf_iorpy_magic now can delete the complete save directory; both the one Ren’Py makes by itself, and the one wtf_iorpy_magic makes by default
  • Episode markers
  • Athena’s parameters were changed to prevent a very embarrassing exception
  • Countdown now includes a bar, it will be colored by 0.3.0 hopefully
  • Implemented the MusicRoom (but badly)
  • Added two songs from AgentAbacus and Nihilore

Game Story:

  • Small branching point continuation

Balance, Fairness, and Difficulty

When I started working on Project Exist, I knew in advance that you can’t have all three no matter how many people are playing the game, at least not in an effective distribution. Imbalance is not unfair, unfair is not difficult, and difficult is not unbalanced. But in the industry, getting even two is starting to seem pretty hard. Why?

Balance in game design refers the parts of a game being compared to other parts of the same game (at least in terms of the game’s mechanics). There are always going to be favored playstyles because those are subjective. For instance, the process of maximizing damage output (or maximizing damage resistance) at the cost of minimizing everything else is often seen in RPG’s of every kind. In other words, specialized character types are always going to have a “best way to specialize that way” (also known as a build). But so what? The trick then should be to make it so that each specialization type is worthwhile. In other words, if maximum damage is a good idea, then maximum tanking also should be.

But this fails in two notable MMORPG’s: Guild Wars 2 and RuneScape 3. It fails in Guild Wars 2 because at the highest level of content, everything in sight will kill you with a single blade swing regardless of how much armor you have on. So maximum damage outdoes everything else. It fails in RuneScape 3 for a far more interesting reason. Imagine for a moment, that I am selling two different brands of concrete. They both have exactly the same durability, material make-up, whatever. The two differ only in terms of appearance (which you don’t care about because you’re going to be using this crap as a foundation for some building) and price. Knowing that both kinds of concrete will perform precisely the same, would you buy the cheaper one? I hope so, but this is the problem RS3 has. Often items will have precisely the same function, but have different prices. Would you rather have an obsidian shield that gives you +20 armor and costs $300, or a red shield that gives you +20 armor and costs $350? Hmm. Project Exist is in a strange place because the combat needs to be valued as much as the story, even if the combat doesn’t happen often. So how can a single-player game be balanced? Simple: make everything dynamic. If you run a tanking character, we’ll give you a higher-damage opponent. If you run a high-damage character, we’ll give you a tankier opponent. We will balance to you.

Fairness (don’t look in your dictionary) is very different, because it is subjective. Fairness outside of game design sort of works like this: no one has to study for their tests! Instead, you flip a coin. Heads you pass, tails you fail. Very boring, very unrewarding. Players prefer the game to be unfair, but the game still needs to feel fair. Imagine your typical gunfight to the death. Your life is at stake, “playing fair” damn well better not be a concern. You’ll use grenades if you have them, shelter if it’s there, and so on. Gamers like the Halo/Crysis/Call of Whatever π campaigns because they feel challenged. This challenge is what makes the game enjoyable; the lack thereof sucks. A game that requires you to earn $400 by the end of the game but gives you $400 at the start of the game is not fun. Unfairness is its own reward… sometimes. Unfair can go too far. Players should get frustrated. But that frustration shouldn’t come from false difficulty; it should come from them struggling to get better.

If players like unfair, then why is false difficulty bad? Victory often is its own reward if the fight to get it was arduous in a way that tested your skills. Imagine yourself driving down the street, and if at the first light you take a left, your car gets eaten by a dinosaur and so you respawn. You know taking a left is the fastest way to get to work, so you try taking your left… differently. While honking, without honking, while in neutral, while not signalling, and so on. Eventually, you realize that this “left turn” is an instant death trap, so you go straight this time and live. Then you take a right and this time you die because a washing machine falls on you. So you go straight, then take a left… This is trial and error, and not in a way that teaches the player skills. Instead of your capabilities, it’s really your patience that is being tested. Whenever a game is difficult, it should be because the skills are hard to master, and not because of invisible death traps. If the death traps are visible and you have to make the drive in under 4 minutes, that’s difficult but not in a false way. We’re still not sure how to make our game truly difficult in a fun way, but we’ll do what we can to make you happy. Just remember that fairness is not our focus (even if it looks like it is).

~Nolan

Project Exist 0.2.3b

All of Project Exist:.

  • The new game build is titled “Coldfixup” for now, please use the in-game updater.

Blog:

  • Added application
  • Moved Previous Builds to Other Links

Wiki1:

  • Fixed Memories of Ultraman 7 formatting
  • Added this

Wiki2:

  • See Wiki1

wtf_iorpy_magic:

  • Version is now 0.1.1
  • begin_game() is slightly more thorough
  • added filify_string(given_message, magic_folder, magic_file), which returns string if given a UTF-8 encoded file.
  • added kill_save(savename), which deletes a save.
  • added freaking_delete_every_external_file_associated_with_this(). What it does is left as an exercise to the reader.
  • added label reset_button. (freaking…() should not be called directly)

Game Engine/UI:

  • Fixed loading an NVL screen within an NVL context within some other context by use of “centered” instead of actual NVL.
  • Slightly changed the way the debug menu works.
  • Several non-working menus removed

Game Story:

  • Absolutely nothing notable.

wtf_iorpy_magic 0.1.0

Today marks the first release of wtf_iorpy_magic. You can also call it WTF input/output Ren’Py magic. Maintaining it is a side-project, and not a priority. It is a very unpythonic and not-so-optimized module for Ren’Py, but does make file management much easier (I really don’t like the persistent system… I just don’t).

It’s a pretty much undocumented in-line, mostly because we figured it’s easy enough to use (as long as you actually read the README). That being said, standalone documentation is available in the zip file. We’re releasing it under the WTFPL. Happy coding.

wtf_iorpy_magic_v0.1.0 (19 KB)

Project Exist 0.2.2b

TL;DR:

  • Build/Link/Name: ProjEx_v0.2.2b_(1014): WTFPL = LMFAO
  • All of Project Exist: The update server has been replaced. ProjEx_v0.2.1b should properly patch to ProjEx_v0.2.2b.
  • Game Engine/UI: Regression: Saves from previous builds will nigh-definitely break at some point due to readback.rpy.
  • Blog: Readers that use feeds and would rather not read everything The Project Exist Team writes should use the following feed: http://blog.projectexist.net/?cat=7&feed=rss2

All of Project Exist:

  • There is now a second wiki. This is where things will be broken, fixed, and drafted. Hopefully, this will help maintain the integrity of the first wiki. Once a draft on the second wiki has been made, or a plugin has been thoroughly tested, then and only then will it be moved to the first wiki.
  • The main parts of Project Exist (that is, the blog, first wiki, and game) will be updated in staggered waves. This means that for all intents and purposes, the blog, first wiki, and game are all considered to be running ProjEx_v0.2.2b, and that all three of these components will be updated at the same time. Small in-game patches will continue normally. Blog posts will continue normally, but features will no longer be added “as they are available”. Change logs will look like this post from now on.
  • The update server has been replaced. ProjEx_v0.2.1b should properly patch to ProjEx_v0.2.2b.
  • Regression: Percussive maintenance applied to server. Effects unclear.

Blog:


Wiki1:

  • Now running MediaWiki 1.23.1, fixing a bug where pages could be blank.
  • Class spoiler (used by Template:Hidden) now works via hovering.
  • Regression: staying logged in feature does not seem to work as well as in MediaWiki 1.22.0.

Wiki2:

  • Actually exists now.

Game Engine/UI:

  • Implemented surprises.
  • Implemented a version of readback.rpy, which was released under the WTFPL (link not safe for work/profanity firewalls, read the first three letters). Readback is independent of rollback; to activate it, scroll up while in-game to display page(s) of previously viewed text.
  • Fixed a bug (which end-users could not experience) whereby questions asked in NVL-mode opened a new window rather than continue from current dialogue.
  • Hacked around a bug (which end-users could not experience) whereby colored text was not preserved in readback.rpy. :(
  • readback.rpy breaks with a KeyError when trying to recall an iterated integral problem due to left bracket [ handling. Temporary workaround was to change brackets to parentheses (). Permanent fix will be to add images for parts of mathematical operations.
  • nvlq(question, *answers) implemented in screens_extra.rpy, which quickly builds a question in nvl_mode and its follow-up. Code will be released in-blog shortly.
  • Answers/choices are no longer explicitly stored, and are instead implicitly stored by answer_add(new_answer).
  • Menu option for Report a Bug added.
  • Regression: Saves from previous builds will nigh-definitely break at some point due to readback.rpy.

Game Story:

  • Absolutely nothing notable.