wRx Jack the sound barrier. Bring the noise.

22Oct/110

20/20 Hindsight

A clean slate. This has come up several times over the last few days, in different contexts, but it's coming back to haunt me once again. This time, it's Corrosion. I am getting the itch to start all over, from scratch, and fix some of the mistakes I initially made. Set things right. I'm not going to do that, because I realise that you'll always keep that urge. You work, you learn, you grow, you look back and you realise what you could've done better. It's also one of the traps you can get caught in. Always go back to rewrite and redo your own code and never push forward to finish anything. I just have to keep telling myself that. :)

12Oct/110

Corrosion, Motivation, Progress

Sometimes I find myself unable to get myself to work on something I’ve been dying to work on because my schedule has been so packed that I just need some time to do nothing of any significance, just to decompress. Even though I want to work on my project, I find my mind wanders to different things. Gaming, Facebook, 4Chan, reading MMA news, anything but my project. In the past I often thought that my avoidant behavior was because I secretly didn’t want to work on my project, but upon further reflection, that really isn’t it. After having wasted about half a day doing everything but the work I wanted to do, suddenly I’ll start working and suddenly I’m getting into it. It sucks because instead of the ten hours I had wanted to work on it, I only work on it for three because the first seven hours were wasted on other things.

It helps that there’s some pressure. It helps that this isn’t a solitary project anymore. With a handful of regular players and daily activity, Corrosion has strangely attracted a few people that keep coming back, even though we haven’t really advertised its existence.

It also helps that my brother is involved. A collaborative project is much nicer than a solitary one, especially when you’re both enthusiastic about it, work on it together, come up with new ideas and develop them together. To have someone sit next to you and work in a deep voodoo team, passing the keyboard back and forth trying new ideas and coming up with new solutions is even better. Unfortunately, that’s not the level of involvement I experience from my brother. Has good ideas and likes to think along, but he’s not nearly as dedicated as I am, nor has he put in even a tenth of the time I have. He wants to be involved and he knows what he has to do in order to be involved, but he can’t seem to get himself to do it. Perhaps much like me, he needs time to do nothing of importance before getting to his projects, too, only to never really get to it.

Sure, he lacks the technical savvy, but that’s not anything that can’t be remedied with a little elbow grease. I had to start from scratch, too, and I didn’t have the luxury of asking help or advice from someone. (He’s in a privileged position, really.) No, it’s not the technical knowledge he lacks, he lacks assertiveness and the drive to do learn what he needs in order to make a bigger impact on a game we started together. Unfortunately, I have no idea how to motivate him in this regard. I guess being part of this isn’t enough.

24Sep/110

He Who Persists, Prevails!

Lately, Corrosion hasn't been getting the necessary attention it deserves. Sure, I discovered Bloodlines and Deus Ex: Human Revolution which have swallowed up significant amounts of my time, but still, I should've been a wee bit more diligent.

Working on the Arena has had me demoralised due to a glaring flaw in the approach we chose, which had been nagging on the periphery of my mind, had been noticed by certain players, but one that I was hoping to find a work around for. Tweaking the opponents in the Arena became almost impossible.

For those who care to know the details, read the following paragraph. For those that don't, skip this paragraph and move on to the next one. In essence, we had decided we'd like to let go of racial attribute maximums, allowing a near endless expansion of  attributes only soft-capped by a maximum action points you can spend in one go to raise it any further, etc. etc. Unfortunately, a really high Strength attribute means a very high body resistance target number. A very high Willpower attribute means a very high sorcery target number. As soon as an attribute becomes the target number for something, this concept breaks. Nobody will shoot an Ares Predator with a damage code of 9M when the body resistance test is done with 25 dice against a modified target number of 4. Especially when you can also fight with a Combat Axe which, when you have a strength of 25, gives you a damage code of 25S and even if you have a Body of 25 to resist that, a target number of 20+ is brutal.

So yeah, we had to change that. So attribute maximums are back in and we reset all characters, basically wiping the slate clean. Everyone understood, but not everyone was very happy with starting over again. Asking for starting karma and reputation, which we weren't so keen on granting. It means we really have to step up our development from now. We've got a great idea for a new mission, which will incorporate some new things and should be available almost immediately. We'll retweak the Ripper mission so that it'll be available sooner and we'll hopefully keep some of the dissatisfied players.

Anyone, short update over!

26May/110

Self Motivation

Self motivation can be a big problem. When you lose your momentum or enthusiasm in any project it's hard to pick it back up again. With Corrosion, I had that when I was trying to figure out what to do with the pathfinding algorithm. It was just not performing and it was a draining and harrowing experience. It's still not the way I want it to be, but at least I got it to work to a degree that I could continue.

Then it was implementing spells in a solid way. Shadowrun spells are funny things; they don't operate in a uniform way, so there's a lot of exceptions that you have to build into the code. I've got the spells implemented for players now, but implementing it for enemies is going to be a bit of a pain still. That's where I am right now, thinking about the best way to implement them for enemies. Luckily, I was smart enough to build in several hooks when I was busy setting them up for characters, so it's definitely not going to be quite so difficult as when I would have to build it from the ground up, but still.

Surprisingly, it's also not about the reward; the reward will be a whole new mission that's just waiting to be used once spells get done. All the players are begging me for more content while I plug away at the foundation and the new mission, The Arena, is just sitting there waiting for me to get off my ass and do it. I suspect it's going to be about a week's worth of work. So about 20 hours in total, so that's not so bad, it's just the start that sucks. I'm an idiot. :)

And I can't even start to think about implementing spells into the PvP engine, because that requires a level of sophistication that I don't know how to tackle yet. The PvP engine requires a lot of sophistication it's lacking right now. The combat for characters is all automated, so ideally you'd make a few smart decisions for characters, like when to reload their weapon, when to switch to unarmed combat when their bullets run out, when to apply a slap patch or cast a Heal spell, how long to keep casting spells and at what wound level do you not risk any further drain? And ideally, all these things should be lightly customisable for a player.

Anyway, I'm just ranting a little bit. Talking (or writing) about this project usually gets me motivated. I should do it more often. :)

16Feb/110

Monetisation

Recently, I found a great website at bbgamezone.net, a community of amateur and semi-professional social/browser game developers. It's cool to finally get to talk with some people who sometimes have up to five all ready running and successful games published. Their ideas on best practices are invaluable and the advice on monetisation of games like this are raw, uncut and realistic.

One of the things that surprised me is just how many games are out there, how many people are trying to make an enjoyable game, what a wide scala of genres are covered and how utterly simplistic some of these games are. Also, a suspicion of mine was confirmed; it's very, very hard to actually finish a game. There are tons of great ideas that are posted on the community board that will never see the light of day. I guess not many people can sink their teeth into a project and see it through to the end. I hope I'll be able to have the tenacity.

8Feb/110

Economy, Ammunition, Gear and Reputation in Shadowrun: Corrosion

John Woo's "Stranglehold"One of the most difficult challenges with an online game - any online game, browser or otherwise - and to an extent normal games as well, is how to keep the economy under control. When you play monopoly, the amount of money in play is always the same, it just changes hands. When you play a computer game like World of Warcraft or Shadowrun: Corrosion, where you can create money out of nothing by doing missions or quests, it becomes important that the amount of money earned (created) is balanced out by the amount of costs incurred (destroyed.) In Shadowrun: Corrosion, we're looking at ammunition to help solve that problem.

Ammunition comes in different forms; actual ammunition for weapons like pistols, rifles and bows are the most common types of ammunition. You can buy this ammunition and it depletes whenever you fire your weapon. Not every character will have use of that type of ammunition as shamans and mages can use spells instead, and there's always the option to duke it out with your fists or with a katana! In essence, these will have an edge over those using ranged weapons, but they'll most likely suffer more damage as a result of drain and as a result of closing the distance to their opponents, essentially making hospital trips and slap patches more their kind of ammunition. In the end, nuyen is destroyed and the economy remains more balanced.

Balancing the costs and earnings of a character is probably something that's going to take a lot of effort. Interestingly enough, a game I used to play, The Dead Awaken, a really simple but very addictive and popular browser game where you try to survive in the midst of a zombie plague, had terrible balancing. Inflation was insane, prices sky rocketed, but luckily it didn't diminish the popularity of the game. Unfortunately, in the case of Shadowrun: Corrosion, I think it's going to be a lot more important to keep things balanced. Essentially, training is probably going to be the biggest nuyen sink, followed by ammunition in the long run, and then perhaps gear.

Because there's not that much gear out there that scales with a character's progression, with the possible exception of Cyberware (regular, alpha-, beta- and deltaware) and spells (force 1, 2, 3, etc.), we were thinking of keeping certain gear bound by reputation constraints. That way it takes a while before you can get your hands on an AK-98 with all the trimmings, putting the emphasis more on weapon modifications. Another thought was to incorporate special weapons. Like Ah Mae Sing's Colt L36, a special issue L36 with some bonuses, much like they do in Fallout 3.

Getting back to ammunition; the idea is now to make certain ammunition purchasable (regular rounds, gel rounds, etc.) and make certain ammunition purchasable from special vendors or perhaps only something as a reward for performing particular missions. EX Explosive Rounds, adding an extra 2 points of power to a weapon must be something worth putting a little effort in. Running out of ammo in the middle of a mission is going to cost dearly when ghouls tear you apart as your weapon repeatedly goes "click click". It's going to be even better when you get ambushed in a PvP fight and they didn't realise you were packing EX rounds in your Ares Predator and had the Woo Clip modification doubling your ammunition capacity. I see potential. :)

27Jan/110

Possibilities, Ignition

Michael Komarck's "Combat Mage"One of the nicest things about having a project of the magnitude that Shadowrun: Corrosion has is that, if done right, ideas spawn and ignite new ideas. We always held the idea that Player vs Player (PvP) combat should be a large part of the game, not only in order to keep the game competitive, but also because we needed a reason to play Corrosion in a browser and being exposed to other players. If there was no PvP element, the game would be a single-player game with chat options, and that wasn't good enough. The idea of PvP spawned the idea of organised PvP, which is what our end-game is going to be about. (That and resource management.) So we started on PvP, single combat first in order to set the stage for the multi-player combat and in order to give players something more to do to make money, to earn karma and to tweak their character.

We've got a rough outline for ranged PvP combat finished and it's looking good and fast, which is good since the path-finding algorithms we're using in missions leave a lot to be desired, unfortunately. Having use for pathfinding, it's fast. Immediately, we came up with another idea; ambushing. Ambushing (or surprise) is already a part of the SR3 game system, where, before the combat starts, the ambusher and ambushee both roll a reaction roll, ambusher against target number (TN) 2 and the ambushee against TN 4, to determine if the ambushee could respond. If not, then the ambusher got a free combat pass to do his worst, which, when you've got enhanced reflexes, can be lethal.

Of course, this lethality of ambushing lead us to another idea; how about we drop the TN for the surprise rolls by one for a middle lifestyle, and two for a high lifestyles, and drop the ambush all together for a luxury lifestyle? That way, there are more reasons to aim for a higher lifestyle, which in turn demands a higher daily upkeep price, which in turn keeps the economy stable and flowing.

Right now, if you're victorious, you get 1 karma if your opponent had a higher reputation than you, another karma if your opponent had a higher rank than you, your rank increases, and you get between 5-10% of the opponent's nuyen. If you weren't victorious, you get one karma if either the opponent's reputation or rank was higher, but you lose 5-10% of your nuyen to your opponent. Also, your rank will most likely go down. This concept of earning karma and making nuyen through PvP introduces some new ideas; you could self sustain on PvP, never having to do one mission if you don't want to. This means mission rewards need to be competitive in order to keep a steady influx of nuyen into the economy, otherwise players would constantly fight each other and the same nuyen would exchange hands over and over. Nuyen still needs to be spent on increasing skills, attributes and gear, so the need for missions will remain, but to keep the economy healthy we'll need to keep an eye on things.

What if you want to safeguard your money? Couldn't you put it in an offshore bank account instead of walking around with it in certified credsticks waiting for some other player to come along and rob you? Wouldn't that be a great addition to customisable lifestyles? You start out with a small bank account where you can keep money stored for a lower level lifestyle and increase the size as the quality of your lifestyle increases? Perhaps you can buy expansions to a lifestyle, increasing your bank account, increasing your security or something to that effect.

Ideas aplenty, and more and more popping up as we go along. It's a great feeling, creating something and being infused with ideas. It sure beats sitting around being lead along by someone else's idea and never having any of your own. I like it!

15Jan/110

Measured, Focused Progress

One of the hardest things to with a two-man project that has the scope that Corrosion has is keep the momentum going. It's easy to get side-tracked with items that aren't the core of the problem you're trying to solve. For instance, Robin and I have settled on what the end-game goals are going to be and there are a lot of things to be done before we implement it. crews, PvP, lifestyles, magic in combat, adepts powers, the list goes on and on. They're all linked, so it's hard to set priorities and when you've set priorities, it's hard not to get side-tracked by frivolities.

One of the problems we had with the missions map was that certain tiles, those bigger than 32x32 pixels, were sticking out at the right and bottom edge of the map, and that some of those same tiles weren't showing up properly at the left and top edge of the map. This because we were showing the tiles at 32 pixel increments in each direction, so if a tile was bigger than that, it would either not show up if it wasn't showed in full, or it would stick out of the edge of the map if we weren't going to show it completely. It always bugged me and a fix I contemplated for a long time was to cut all the tiles down to 32x32 tiles, and mixing and matching the tiles that were supposed to go together. It was going to be a painstaking and time consuming task so I wasn't looking forward to it. And the only thing I'd fix were some visual glitches, nothing major and nothing at the core of the mechanics.

Corrosion Mission Map

Then I realised another way to fix the bug and one that I thought wasn't going to take quite so much time; I was going to hide the overflow of the <div> the map was set in, that would easily solve the tiles sticking out at the right and bottom end of the map. The only thing to figure out was how to make the not fully visible tiles at the top and left side of the map to show up. I figured I was showing 10 tiles on either side of the player, I might as well show a couple of tiles more on the left and top of the player, hide the overflow and that would be that. It worked, hurrah!

But that's where things got off the rails a bit. That's where it turned murky and what I thought was going to be a quick fix turned out to be a rather complicated problem to solve. Fortunately, it was going to be a problem I would have to fix sooner or later, so I guess it might as well be sooner.

It turned out, the tooltips I was using to display the information and attack sheets for the enemies and the action sheet for the player, was being contained in the same <div> as the map, which meant that the overflow of those elements would also be hidden. Considering how the tooltips often transcended the boundaries of the map, most of them (if not all of them) got clipped to the point of being useless. I wasn't too happy with the tooltips to begin with, and I had found a different tooltip type that I had already partially implemented in different areas of the game that I had wanted to use but didn't really know how to implement in the fluid, AJAX environment of the missions yet. But I wasn't going to have to do that since I got the ball rolling on the overflow problems with larger tiles.

The other tooltips worked with a javascript mechanism that would go through the HTML after the "document.ready" event and filter out all the designated tooltip-divs, attach them to the top laying <body> element (which means they were no longer contained by the mission map <div> and would no longer be subject to the overflow clipping) and got tied to the mouseover, mousedown and mousemove events of the <div> they were nested in. Pretty nifty piece of work. I was quite happy with it. Until I realised that while moving, attacking, dropping stealth or any of the other actions you could take while on a mission, it seemed the tooltips would vanish. I spent an evening hacking around in javascript in order to solve that, but it would still ocassionally happen that the tooltips wouldn't reload properly when an AJAX call would come back. It seemed to be tied with the glitch I had noticed for a while that the combat log didn't always refresh like it should.

Last night, it seemed like I had a good idea on why the combat log wasn't refreshing like it should. It seems some AJAX calls aren't handled properly because of browser-caching, and a quick fix was to add a random GET key to the URL in question, making the URL that was called unique, circumventing the caching without too much hassle. (Sure, I realise that a javascript, "randomly" generated 8-character string is anything but random and will probably result in a 1 in 10000 chance that it will happen again, but give me a break!) I haven't done any extensive testing, but the first signs are optimistic. Let's hope it lasts.

And so, I come to the point of this big rant; it's easy to get side-tracked, and it's easy to let yourself be side-tracked. Self-regulating and self-motivating is the hardest part of  keeping a project like this going, I suppose. Robin and I are intelligent enough to tackle most problems and if we can't we'll find a creative way around it, but keeping on the right track and not meandering off course is the hardest part. It's hard to prevent, it's hard to detect, and it's even harder to correct once you detect it. Everything is important -- no, everything seems important.

8Sep/102

It’s been a while…

...but I've finally starting working a little bit on Corrosion again. I guess I overdid it a bit when I started working on it pretty much non-stop, taking occasional breaks to wash and feed myself and take trips to work in order to get paid. I took a little break over the summer and gave myself some time, waiting for the logos that are being developed. It's a sub-project that my brother is taking care of, so perhaps I shouldn't be surprised that it's been taking as long as it has. ;)

Anyway, I built something that had been necessary for a long while; a daily refresh mechanism. It turned out not to be quite so difficult after all. Now the finished quests get refreshed after a day has gone by since the last daily refresh. I'm not sure whether it's a smart idea on my part to make the daily refresh character dependent (each character having their own daily refresh time, but whatever, we'll see where it ends, otherwise I'll move it to midnight, server time.)

We'll see how fast development goes from now on. I'm not putting any pressure on myself or my brother. He's been keen on getting his own development environment set up so that he can start working on designing the next mission; The Arena. :)

Tagged as: 2 Comments
2Apr/100

Draining

I swear, this thing might kill me. I'm still plugging away at Corrosion and the combat mechanisms in particular. The pathfinding is done, it works, but it's anything but fast. Limiting the searches to about 200 tiles or so seems to help with the speed and makes the game slightly more playable, but it creates strange situations where pursuing enemies break off the pursuit through a corridor when they find their path blocked by their friends. I think I'm going to have to find a reliable way where they ignore their friends in terms of finding a path, but respect them in terms of getting in line. That way they'll continue pursuit but never overtake their friends until a space in the corridor opens up.

Why is it going to kill me? Well, these musings keep my preoccupied throughout the day. Whenever I have a free moment, there's only so many topics that my mind wanders towards, and Corrosion is on that list. (Together with finding a possible place for a friend when she arrives back in Amsterdam soon, my soon-to-be-unemployed sister and her financial situation, my work, my Shadowrun game, Jiu Jitsu, etc.) So today, while I was walking to work, I nearly got myself run over by a bus because I had been preoccupied with figuring out this pathfinding problem. The adrenaline dump of a near-death experience quickly brought my mind back to reality, but simultaneously drained me of a lot of my energy. Funny how that happens.

Tagged as: No Comments