This is the first in the series of devblog/dev diary entries detailing the development of my PORTALHOT Portal 2 mod, made for the #MAKEITSUPERHOT contest! Until now, this mod entry has been somewhat bare-bones. It's mostly because I rushed it somewhat to post it on the fist day of the contest. I'm not all that sure as to why I was so concerned that someone would come up with a SUPERHOT Portal mod before me. Now that I think about it, it actually seems like a pretty insane idea. Let's get to the meat!
So, how does one turn a non-violent FPP puzzle-adventure game into something reminiscent of an ultrafast semi-tactical FPS with high-stakes gameplay? It's not all that difficult, really!
Portal's lack of violence really depends on your point of view. Enemies are definitely not a problem here. Sentry turrets are more then capable at filling that role, and if you're bored with bullets you also have other options. It's a little different on player's side, but not by a large margin. Generally, with a good aim and a bit of time to think strategically, portal gun can be as devastating of a weapon as any other. Couple this with the trademark ability to move quickly over large distances, and you'll find the stakes to be evened out somewhat.
In reality, the "time moves only when you move" mechanic is good enough to carry almost any kind of game. It synergizes really well with the concept of "portal combat", since you have that extra time to think about how to place each portal to deal with sentry guns efficiently.
So, how does it work on the technical side of things? Well, it works, that's the most important part. I'll do a quick recap of what Portal 2 modding is like for people who aren't familiar with it. Unlike other Source engine games like Half-Life 2 or Alien Swarm, Portal 2 doesn't have it's source code publicly available to the modders. Instead, level designers need to rely on game entities with a basic I/O system and a simple scripting engine called Vscript that only supports a weird niche language named Squirrel. That doesn't sound like a whole lot, but many games don't even offer that much, so I'm glad for what I have, and if you know what you're doing, you can do quite some magic with the game.
The whole time-moves-only-when-you-move thing works thanks to two entities: game_ui, which detects player inputs such as movement keys etc, and logic_timescale, which is responsible for the slow-mo itself. There are more entities involved, such as a math_counter that counts when all the buttons are released, but these two are the essential ones. The whole contraception is a little rough around the edges, but it works well enough to be quite playable.
In the next days, I am going to implement a couple of things that will let me speed up level design process later on (such a scripts for easier "text interludes" and so on), and then work on the maps themselves. I plan to make a total of 8 maps for the mod, which I think is a pretty realistic estimate considering my capabilities. How long will each map will be is something I still need to decide, however I think in the worst case scenario each map won't really be shorter then 3 minutes. This might seem a little short to some of you, but keep in mind that it is more of a novelty mod for a contest then a real serious project.
Stay tuned for the next diary entry, hopefully coming within a few days!