Fresh installation

So, here’s a new version of the site. Still in a very basic form, with only the most barest of plugins. I’m checking to see what the stability is before proceeding but the positive is that I already see that php calls do not automatically take 10 percent of my available ram each. More like 3-5% each which I hope will be manageable once the caching plugin picks up.

This is the second time I’ve had to do a complete wipe of the blog and restart. The first time was after a being hacked and finding it impossible to wipe all traces of the code which meant that they kept getting back in. This time I went even more radical and completely nuked my existing database as well, because it’s the one I’ve been using since 2007, which means its full of crud from all the plugins I’ve installed and uninstalled since then. I sincerely hope this was a big part for the memory leaking because if that doesn’t work either, I’m at my wits end, and I’ll probably have to start seriously considering moving away from Dreamhost.

So now I wait and see if the site will avoid imploding from those DOS-like requests I’ve been getting lately.

3 economic myths most people still believe in.

Unlearning Economics has a brief but succint list of estabilished economic myths and why they are wrong.

  • Rich countries did not get rich through free trade, but through the use of protectionism and other state interventions such as capital controls and subsidies.[…]
  • Money did not arise as a solution to the ‘double coincidence of wants[…]
  • Peasants did not freely move from their land into 12+ hour days in factories because it was ‘better than the alternative.[…]

Worth a read.

Ding Dong! The evil creeper is dead!

So it seems that the notorious reddit troll/creeper/scum-of-the-earth Violentacrez has deleted their account in the last few days. This is a person who started lovely subreddits like /r/jailbait, /r/picsofdeadjailbait and /r/rape. All pretty much what you’d expect them to be, in the very worst scenario.

Even though widely hated by many, and loved by others, he was maintaining a big presence and influence on reddit culture, constantly promoting the kind of vile shit that would get him beaten up or locked up  in real life. None of the hate against him would  phase him, and he even made subreddits to post all the hate mail he was getting.

And a lot of redditors loved him for it ((“it” being his stalwart defense of “free speech”, by which we mean everything that is absolutely vile about humanity)) so much, that he has his own fanclub and a host of people willing to sing his praises and defend his character. Because apparently he’s a nice guy IRL. But, as someone else aptly put it:

I love how redditors defend VA. He says that stuff but he doesn’t mean it! He’s not like that off the internet! Of course he isn’t. Because he knows he’d be an instant pariah if he said any of that vile crap to someone’s face. VA isn’t nice in person because he’s a good guy. VA is nice in person because he’s a COWARD.

There are only two options here: either he constantly says offensive shit online because he thinks it’s funny which makes him a troll and an asshole OR he really means it but doesn’t have the guts to say it IRL which makes him a hypocrite and an asshole. Either way he comes out smelling like shit.

So what happened? Well, the manchild got annoyed that someone who wasn’t a waste of oxygen started having more influence to reddit culture than him. Namely SRS, or ShitRedditSays. A subreddit that started to catalogue all the vile things people in reddit actually believe in or support. And because recently SRS has started having more of an effect on reddit’s culture, via online campaigns to close down pedophilic content on reddit for example, VA has decided to take his ball and go home. Reddit is starting to become toxic to him.

A joyous occasion to be sure. What wasn’t even thought possible a mere year ago, has happened just because some people stood up and said “enough is enough”.

To give an idea on why exactly this is such a big deal, and why redditors like VA are so unbelievably upset about the presence of SRS, that they’re willing to delete accounts they’ve invested thousands of hours is, I’ll quote an SRS regular succintly explaining the situation:

Someone asked:

Would someone be so kind as to tell me whether or not I’m understanding the gist of what’s going on here? I’ve been on Reddit for over 6 months now and, up until just a few hours ago, I had no idea that the site contained the kinds of things mentioned here.

I’ve seen SRS brought up numerous times in comments but never bothered to look it up until today. It seems to me that this subreddit (in particular) exists to expose the hypocrisy, misogyny and general lack of moral fiber that some users exhibit.

I apologize if this is not the appropriate place to post something like this but I’m not sure where else to put it. I read about Project PANDA and I’d like to help if I can. I’m horribly bothered by the fact that those in charge of Reddit as a whole refuse to take a stance on this issue. I wasn’t aware the exploitation of children was something one could even be neutral about. Ugh.

Reddit needs to be cleaned up if they’re seriously letting perverts run amok like this. Where can I start?

To which an SRS regular replied:

You’ve got the right idea 🙂 I’ll give you a rundown:

Redditors believe the internet is theirs and that they can dictate what is good and bad. When majority of redditors are 20 something white males, the hivemind becomes this misogynistic, racist, ableist, everything-ist ball of rage, intent on attacking everyone who isn’t the same as them, and having pissing contests over who can be the most vile human being because it’s (apparently) funny.

To them, we’re the authority figures these privileged white boys most likely never had, the ones who slap them on the wrist and tell them “NO! That’s not OK!” and drag them kicking and screaming to the naughty step. Only difference is they don’t actually learn anything and keep crying and crying about their rights while literally abusing everyone elses. Since we’re dealing with adults, they’ve managed to build up a facade of this website being all about cute, relevant memes and cats so that they can get their creep on behind the scenes. They’re so good at this, the President himself has unfortunately associated himself with reddit, probably on the advice of some clueless PR. (Really, all they had to do was search Obama and see some of the horrific shit that’s been said about him and his wife on here since 2008)

The admins are the clueless, afraid parents who have to get Super Nanny in to control their adorable little demons and won’t tell them no even though their kids are literally biting them and locking them out of their own house. The admins only listen when the creeping gets so bad that the media starts picking up on it and they risk losing their sponsors. This has happened twice now.

First time was because of the subreddit called jailbait which did as the description suggests. Redditors traded pictures of underage girls, some as young as 12. Anderson Cooper called reddit out on his show then the subreddit was shut down and redditors screamed and cried all night long.

In the last few months reddit’s new sick obsession had become Creepshots, where pictures of unaware women usually in shorts or cleavage bearing tops are posted, and well you can imagine. One creep was a teacher at a high school taking photos of his female students (one with her underwear showing). He/the school was recognised by some other redditors and he was subsequently fired and is being questioned/charged. I’m not entirely sure what went down yesterday but the Creepshots subreddit has officially been banned and the creep tears are flowing freely (and the media shitstorm builds every week). When we began to attack the subreddit, they legitimately asked why creepshots wasn’t OK but People of Walmart was. Most of the redditors who posted creepshots blame the women for, and I quote, “wandering around the planet in short skirts”. One woman’s boyfriend grabbed the arm of a redditor creep taking a creepshot and the redditor cried to Creepshots about it and was comforted and told his rights were being threatened.

Reddit routinely comforts and listens to pedophiles (I saw a thread congratulating a man for not molesting a 4 year old). They do not believe dating a 16 year old is illegal and also justify raping female children because “their bodies are ready for breeding”. A few months ago, they started a thread asking for rapists to tell about their attacks. The ones who almost raped were comforted for not raping and some who DID rape were told it was justified. A psychologist actually joined reddit just to tell them how dangerous the thread was. The general response was that he was threatening their free speech. The admins made no effort to delete the thread or moderate it. They offered no safe space for the TONS of victims triggered by the thread, some only just realising upon reading the accounts that they were, in fact raped, and many MANY people left or were made very distressed because of the thread. Redditors general consensus was that it was an important, insightful topic and what’s all the fuss about?

So that’s a short, depressing history of this not so wonderful website so far.

So there you have it. The driving away of VA was a success greater than what I ever expected from SRS. They managed to drive away a troll who was desperate for intrernet popularity and infamy, and seemingly impervious to criticism, by merely bringing to light exactly the culture it was promoting in reddit. By figuratively merely shining light upon its domain. VA probably panicked when people discovered who he was and started asking him to interviews, which is why I saw him leaving misleading comments about his account being a shared one (i.e. used by many people) shortly before it was deleted.

I don’t believe for a second that VA deleted his account because of some noble protest. He deleted his account because he is, as he always was, a coward.

Combo Strategy video of Android:Netrunner (on OCTGN)

Two videos showing the strategy of the new Card Game Android:Netrunner, playing digitally on OCTGN.

So my work on the ANR plugin for OCTGN is continuing at a good pace, having reached version 1.1.15.4 at the time of writing this post. As fortune would have it, the plugin has already gained in popularity at the BoardGameGeek, so much so that the first online tournament organized for ANR has managed to fill its 64 positions in less than a week! Since the 12th of September there’s been almost 700 matches concluded on OCTGN!

There are many benefits for having a digital version of the Card Game other than the obvious, and one of them I decided to explore with the help of the player and great video-maker Tragic. The idea I had was this, we were going to play a match of ANR, and both of us were going to record our side of the match, and while doing that, we were going to be providing commentary on our actions and strategy. This way we hit three birds with one stone. 1. We can show the gameplay and deep through required to play Android:Netrunner. 2. We can visually advertise the existence of the OCTGN plugin for ANR and get people to try it out. 3. We can show the proper way to use the OCTGN plugin to play ANR efficiently and fast.

So after a few unsuccessful attempts (1st time, the matchup was completely lopsided. 2nd game the recording b0rked), we managed to get it running as we wanted, and now Tragic has released the results on Youtube. And they are looking really good. Take a look at the videos below to see what a game of Android:Netrunner looks and plays like, how the OCTGN plugin for it works and how I sound like in real life 🙂

1st game is the pre-built matchup as instructed by the manual of the core set. Jinteki VS Shaper. This is just the cards included in the core set for each faction + the neutral cards for that side (corp or runner). Unfortunately, this game ended up being completely lopsided against me, as I had a horrible draw, while Tragic had an almost perfect one. Still, you can see how I tried to fight the inenvitable and what kind of tactics I attempted in such a very unlucky situation.

I had no chance really.

The 2nd video went better for me, even though I didn’t have a very good hand, but I still ended up losing due to a bad call at the mid of the game. Just a completely wrong decision on my end that ended up biting me in the ass. Watch and see:

I hope you enjoyed these, do let us know what to improve about them.As this is the first attempt at this kind of video and both me and Tragic were attempting this for the first time, there may not be as much commentary as there could be, or we may have just played too fast, used shortcuts which are not obvious etc. In the future we plan to start using constructed decks, and hopefully get far more interesting matches out there.

 

Android:Netrunner on OCTGN

A short introduction to Android:Netrunner, it’s OCTGN plugin and a short step-by-step guide to get it up and running.

Android:Netrunner logo. A woman under a blue light, wielding virtual interfaces with both handsI mentioned a while ago that the first and most basic version of Android:Netrunner has been released on OCTGN, and you haven’t really heard from me since. Well the reason is that I was too busy coding improvements for it. I think it’s time to give my latest creation the usual treatment and announce it here.

So Android:Netrunner is a new reimplementation of the Classic Netrunner, but given a really good polishing in the rules and art by Fantasy Flight Games. The game has not been released yet ((Release Date is mid September 2012)) and it already seems like it’s going to be a runaway success! There an absurd amount of excitement for the new version online and the game has been sitting in the hottest games of Board Game Geek for weeks now. It’s sitting in the second rank for customizable games, even before people has a chance to really make decks with it.

The game is a unique blend of asymmetric gameplay combined with a significant element of bluff. This combination, along with the Cyberpunk setting and the (now) Noir flair of the Android universe, makes it a very interesting and exciting game to play.

At the moment of release there’s going to be  7 factions to play with. 4 Corporations, and 3 Runners. One of the runners is even going to be an anarchist ((Supposedly. I’m not convinced FFG understand anarchism enough to do it justice. Noise, the first Anarch runner seems more bent on mindless destruction rather than anything else. Lets hope future expansions show us a better aspect of the movement.)) playing around with computer viruses. The game comes out with 113 unique cards which is light for a first expansion, but not particularly limiting. You can check out this thread for some in-depth and in-flavor analysis on the runner factions.

I’ve played about 8 games on OCTGN until now, just with the starter decks, and I’m really liking what I see. The feeling I get when I play this game is that it has more cohesion within each faction. They each have a specific style of play that they favor and their faction cards complement it. In deck construction you can use cards from other factions to complement your strength and perhaps even do something completely uncharacteristic and throw your opponent off. I think this cohesion is good because it allows some natural balance as it’s impossible to defend from all angles, so it comes down more to whoever can use their limited tools and some good bluffing to avoid exposing their weak points and hit their opponent where they can defend the least.

So, for anyone interested in trying it out, here’s some instructions on how to get it to work with OCTGN

A Game of Android:Netrunner on OCTGN in progress
The Jinteki Corporation VS a Shaper runner. The runner has just stolen an agenda and the Jinteki is punishing her by doing net damage.

Once everything is set up, you need to find someone to play with. You can go to the Host/Join tab to see if anyone has a game waiting. If nobody does, host your own and put in the title that you’re a new player. There’s a lot of people who will help you learn

Once you find someone, one of you hosts and game and the other joins. Leave the two-sided checkbox checked and make sure that whoever is going to play the Corp is set as player [A] (the host can click on the letter to switch it) and once the game is started, load your starter decks. Things should be fairly intuitive but keep in mind these basic things in relation to the OCTGN engine plugin.

  • First thing you do after you load a deck is Setup (Ctrl+Shift+S). This will check if your version is up to date, show you the Message of the Day, and also give you some Tips on playing the game.
  • At the start of your turn, declare it with F1.
  • At the end of your turn, declare it with F12. Make sure the game announces that your turn has ended and is not expecting you to discard down to your max hand size 😉
  • If you’re a runner, start a run with [F5] – [F8], or by playing cards. Once your run has ended, finish it with [Esc] is unsuccessful, or with [F3] if successful.
  • Double-clicking is your friends. Almost everything you want to do, you do it by double-clicking on the card in question.

The below video will take you through a step-by-step tutorial on using OCTGN to play Android:Netrunner

There’s a lot of other tricks you can use in the engine and most of them have been put into the “Did you Know” starting tips. So pay attention and you’ll be flying through the controls in no-time. Any new innovations I add to it, are also going to appear in the changelog and future MotDs, so you’ll know when good stuff has arrived. In fact I’ve been coding like crazy for the last few weeks, much to the annoyingment of the wifey. So much so that I’m starting to feel like this.

A card from Android:Netrunner. A hacker jacked into his interface is using powerful drugs to focus and bypass corporate defenses
Coding an ANR plugin is kinda like this.

There’s already a large group of players using the Android:Netrunner OCTGN plugin daily, since unlike my other plugins, this game is hot stuff. You’ll find a lot of potential opponents to test your deck-building and bluffing mettle.

If you’ve enjoyed this plugin, feel free to give a diesel tip, to fund further caffeine-fueled development 😉



Good Running!

Android:Netrunner plugin now available for OCTGN

You can now play the game while you’re waiting for it to be released in the stores 😉

Yesterday night I finally managed to release the first working version of my Android:Netrunner plugin for OCTGN. The plugin came out so quickly because it’s a direct port of my Netrunner plugin, which is already at a very polished level. All I had to do this time was fork the code, carefully search and replace the various keywords and work on making the basic scripts (setup table, play card from hand, trash card, start/end turn) work with the new card properties.

I am very thankful to the people online who came forward to provide censored scans or cards and other paraphernalia, xml exports and even the image for my new table board. Thanks a lot everyone, you know who you are. I would never have done it so quickly without you.

And I’m still not done of course. I’m merely warming up in fact. There’s at least 2 more days of frantic coding ahead of me, so that I can bring the core set and the game to the same level of polish as the original netrunner. I need to put in all the scripts for the cards, tweak and bugfix the existing code (although there’s far less script crashes than I expected) and then, finally I can relax by starting to play Guild Wars 2 which will have just come up.

In fact GW2 should already be active for me, since I pre-purchased, but it’s just my luck that I’m working on the weekend. But even if I weren’t, I don’t think I would even try to play without getting ANR finished. I’m far too dedicated to it to stop now.

It’s actually weird just how much I’ve been hooked to coding for this card game. I haven’t even checked my RSS feed, of which the priority items only are already ~500. That’s going to be a PITA to get though.Worth it though.

Anyway, at the moment, anyone can download the basic first version as well as the required markers. One can also download the first set, in its censored version. You can find all the links in the forum.

Why is the first set censored you ask? Well from what people tell me, FFG, the creators of Android:Netrunner have this unwritten policy that they allow online versions of their LCGs, as long as the cards text is censored in some way for the first six months a set is out. Apparently they are likely to send you a nastygram or an outright DMCA request to your host if you don’t abide by this. I have no idea how true this is, as I’ve only heard it third hand, but there you have it.

Because of this, I’ve avoided uploading an uncensored set to my website as I’ve done with all my other CCGs, as I may wake up one morning with my site (or Google account, had I used google drive) taken down. I also didn’t upload the censored version because of the same concerns, given that this is, again all third hand knowledge.

To tell the truth, this whole policy is not only unnecesarry, but also counter-productive. From my experience, most people play card games online when there’s absolutely no other option (and maybe not even then). I’ve yet to see anyone who does it because they’re too cheap. This doubly goes for LCGs which do not have the collectible aspect and thus I can guarantee you that 95% of the people playing have bought the cards. If anything, having an online version is helpful as it increases exposure to the game, and it allows people to check it out and see if they like before they buy. It will absolutely boost sales, particularly with the price ranges of LCGs.

With Android:Netrunner, it’s makes even more sense to allow the uncensored cards at this moment. The game is not even out. Excitement is running out and letting people play a version online (which is never as fun as playing the actual game) can create more buzz and talk about your game. But because of this misguided overall policy of FFG, I’m afraid to do so, as it might lead to action against me. For doing something nice for others and FFG no less. But these are the pains of our culture of permission and intellectual lockdown. Company policies are just as often driven by their legal department, rather than what makes business sense.

But enough about that. Now is the time to grab the OCTGN plugin, a friend and give the whole thing a whirl. And remember, the version you play now is about 10 times worse than the final one I’m going to be releasing in a day or two. So even if you’re not impressed with it currently, check back again when the automations are in place and see what you think then.

The rigors of OCTGN development

Developing in OCTGN is like drinking pure lemon juice every 5 minutes. Lemon juice LACED WITH CRACK!

I must have spent 16 hours a day on the weekend coding my netrunner plugin and yesterday I stayed until 5am coding the latest features. I don’t know why, but this kind of thing is addicting to me. I just can’t tear away from my computer while my code is still not working. If I don’t get to a working state, I won’t go to bed. And given the sorry state of the OCTGN debugger, something that I think will have fixed in 20 minutes, ends up taking 1.5 hours. Of course my wife is none too impressed by this, since I end up telling her that I’ll be going to bed “soon” and when I get there, it’s not even in the same timezone as “soon”.

WTF is this shit?!

And speaking of  a debugger, can I rant about the one, or rather lack of one in OCTGN 3 for a moment? Dear gawds I want to rip someone’s head out at times. It is so bad that the only thing I get is a python syntax check when I try to install a new version of the plugin, and even then, when it finds unexpected sytax (eg, a missing closing parenthesis, a bad indentation etc) it will report the correct issue, but then point to the wrong line of code! You can see that in the screenshot on the right, where I removed a colon after a loop opened, so it got confused by the line break. It then reported a line 30 lines above it! it seems that the more deep in the code the error is, the larger the offset of the line reported. This makes finding syntax errors an absolute pain in the cohones. But this is nowhere near as bad as how non-existent runtime debugging is.

If an error appears during runtime (e.g. trying to read a variable that doesn’t exist, like a typo), the only thing I get is a python aborting error that mentions the very first function I called in OCTGN. So if I have a complex structure where the first function can call upwards of 20 others, included nested calls etc, then imagine one script failing with this error. There is absolutely no clue where to begin looking! I used to have to manually enter short pop-up windows in the code, that would inform me where I’m at in the code, so that I can begin to even track the issue. Tracking a small case-sensitive typo could take from 5 to 20 minutes, depending on how much code I wrote in between. Now? I’ve written my own “soft” debugger inside the python script, which accepts levels of verbosity and spits out messages such as which function I am entering/leaving, and what the result of regex commands are. It’s not perfect, but at least it narrows down my search considerably, and I don’t have to repackage the plugin just to insert some error tracking code.

Why would I repackage the whole plugin to test a line of code, you ask? Fool! A sane development environment of course provides some way to alter code on the fly, not to mention a runtime debugger. But OCTGN is no same development environment. If anything, it’s actively taxing your sanity as you spend 10 minutes for the 1000th time, trying to track which of the 10 variables in a function failed to receive a value somewhere. But if that wasn’t enough, the lack of a way to modify your code while in the game, means that the only way to make small changes in order to try and fix issues is to:

  1. Exit the game you’re currently in.
  2. Make your changes in the python code and save the file.
  3. This is what you get if you try to install a new version of a plugin with the same filename as the previous version.

    Re-add the python file into your .o8g file (a simply .zip, renamed). I use 7zip’s handy function to remember the previous names of files you’ve compressed into, so I just select the relevant directory, “compress to” and then select the name. So it adds and replaces to the existing .o8s files with the same name in the current directory. But make sure the .o8g file you’re putting it into does not have the same name as the .o8g file you used last time! Since OCTGN always keeps the current plugin files open in the system, if you try to reinstall a file with the same name, it will fail. So what I do is keep two .o8g in the folder, Netrunner-OCTGN.o8g and Netrunner-OCTGNa.o8g, and every time add the latest changes to the other one.

  4. Go to the Game tab.
  5. Select “Install Game”.
  6. Find your new .o8g file and select it. This takes 2 extra clicks for me since for some reason Windows 7 or OCTGN, I don’t know which, refuses to remember the name of the previous directory I was in last time I installed a game.
  7. Press OK to install it. Hope you didn’t miss any syntax errors. If you did, you have to close the almost-useless error pointer, go back, fix the issue, and then start from step 2 again. But THIS time you have to use the same .o8g name you just used, as it didn’t actually install it, so it’s still using the old one. Make sure you remember that info, because this shit’s written nowhere…
  8. If you had no syntax errors, then it will allow the plugin to be updated after a confirmation dialogue (extra click there.)
  9. Once your plugin is updated, reinstall the sets, if I’ve made any changes to the autoscripts of the cards. Fortunately, those don’t lock the files, so I can re-use the same filenames and don’t have to keep track of which file I installed last time.
  10. OCTGN randomly decided to keep one file open. Why OCTGN? Whhhhhy?

    However, sometimes OCTGN will decide to keep one of your set files open anyway, usually because you looked at one of those cards last (although OCTGN is using an internal DB now). In case you see those lovely red errors when installing the sets, the quickest way to fix it is to restart OCTGN, including logging-in again. Mmmm, I loves me some time wasters…

  11. Go to the game Host/Join tab.
  12. Click “Host” to start a game lobby.
  13. Select the Game you will play from the list.
  14. Provide a lobby name (or click OK to accept the previous one.)
  15. Press Start.
  16. Wait 5 – 10 seconds for the board to load.
  17. Load my debugger (which I’ve conveniently coded so that it spawns 6 cards with abilities I’d like to check and the environment to use them in. In the past I had to always load a deck, use the Setup function, and then fish for the cards I wanted to check.)
  18. Test the new code.

My now I’ve gotten so proficient at this, that I can do this whole procedure in under a minute. However I need to do this for everything. From the smallest typo, to the biggest code blunder in the universe. Can you imagine the overhead of this? I can tell you, it’s absolutely ludicrous. I would code 50 times faster, if I could make code changes and re-run the same code WITHOUT FRIGGING EXITING, REPACKAGING,REINSTALLING and RESTARTING MY GAME EVERY TIME! The fuck!

So imagine doing all that, and then realizing you didn’t fix the issue at all. Imagine you don’t even know where to being looking for the error, so you have to do this whole process 2 or 4 times, just to enter enough messages and error hooks in the places you suspect the problem is, just so that can begin to track it down. I’ve spent hours in issues that would have normally taken me seconds, just because I couldn’t track it easily (think: regression bug) Fun!!!

Fuck you OCTGN! FUCK! YOUUUUUUUUUUUUUUU!

Oh yeah, did you see that wonderful error above. This is the totality of the console I have in the game. A lot of goddamn scrolling involved to perhaps get an idea where the error happened. As you can see, by default, it tells you fuck-all where the error would be. Not only that,  but the error will appear before ALL the notification you’ve put in the code, because python processes the code faster than OCTGN puts out notifications. So first you see the error, and then you see your debugging messages you’ve inserted into the code. Talk about mindfuck.

Oh sure, you see that it was the “useAbility()” function, but that’s just where the rabbit hole starts. In fact, this particular error was caused by a regex which I hadn’t configured to process numbers in the text of special Autoscripted announcements. So one group in the regex results was empty. This was the 10th function or so called from useAbility()…It took me half an hour to track that down, and that was WITH my custom-made debugger spitting out the actual last function used until now. Good fucking luck figuring that out just from that message…

You need to be a goddamn zen coder to not be ripping your testicle hairs out with OCTGN. You need to be able to write flawless code the first time around, because if you don’t, you’d better write your own debugger first before you even begin to write any sort of advanced plugin. And then you’d better have the patience of a Go grandmaster…

Why yes, I have asked the developers for more debugging tools, more than 4 months ago, multiple times, why do you ask..?

Phew! Glad that’s out of my system

However, for all its failings, OCTGN is still top of the line among card game engines, primarily because of its integration of Iron Python. It has its quirks (some of them quirkier than others) but the flexibility and power of using python in the backend just can’t be topped. Other card games like GCCG also support some sort of scripting, but then you have to learn its own internal syntax, which is definitely not as advanced as the capabilities of python. This is why, for all its failings and frustrations, I still stick with OCTGN. It’s the first engine that allowed me to fully realize my vision for how a card game engine online should work (i.e. automation up the arse!).

Hopefully the new version that’s in development will have *something* better than this sorry situation. But I swear if they have to break my existing python code in 20 different ways due to a new interpreter (like what happened when moving from OCTGN 2 to OCTGN 3) without giving me a proper debugger, I’m going to cry…Imagine having to debug 3000 lines of code times 4 plugins…

Aaaanyway, it is what it is. Still, through the fire and flames, I’ve still created a plugin I am proud of, and soon I’ll be using the existing code to implement Android: Netrunner. So why don’t you give the current plugin a run and let me know what ya think. You don’t want to let all that past frustration go to waste, do you? Do you?

Bastard.

 

 

Netrunner on OCTGN

Netrunner, the game of Cyberpunk asymmetrical net-warfare can be played online. And soon Android Netrunner as well.

netrunnerAh another one of these posts.

So after Dune, I got into developing a Netrunner plugin. I don’t remember exactly why, I think I noticed that the existing plugin had a few bugs and/or could use a few tweaks now and there. I edited it a bit to polish it a bit more, then I edited a bit more to take off some rough edges and…well, one thing led to another and I’ve written another 2000 lines of code >_<

It’s all good though, I was always interested in Netrunner, even though I didn’t get into it when it was active (it had already died when I started diversifying from Magic:The Gathering). With this particular plugin I went completely overboard in the scripting department, writing flexible code to automate around 70% of the various card effects in the game, so that you can just play a card and it works without you fiddling with counters and markers. This is even far beyond the Dune CCG plugin I’ve coded, but then again Netrunner’s card effects and rules are not as convoluted as Dune’s.

For those curious, there’s a lot of reasons to be interested in Netrunner. It’s one of the few (or is it the only?) asymmetrical card games out there, with the two sides of the game having completely different mechanics and strategies. One is always attacking, and one is always defending, but depending on the cards each player uses, the roles might be temporarily reversed as well. It also has bluffing build-in to its system in a way that even Doomtown cannot achieve, and that is a game based on Poker! If you like games which involve an element of bluff, Netrunner is absolutely something you should check. The setting is cyberpunk which is rare in itself, but not only that but it’s made with a degree of humor and 90s pop-culture reference that you can’t help but love. It’s especially cute to see how wrong they go the future in some issues, especially in how IT would progress. In Netrunner’s world things like newsgroups and BBS’ and jury-rigged computers are still big, which is something that gives the whole theme a nice William Gibson and 80’s IT sheen. I love it.

Finally I can’t help but mention that there’s a reboot/reimplementation of the Netrunner franchise from FFG, called Android Netrunner which is set in a different universe but retains a lot of the flavour and (hopefully) improved card game mechanics. It’s also an LCG which means it not a huge money-sink if you want to enjoy it, and it can cater to both those who like to dabble in deck-design and those who just want to pick up cards and play. Since Netrunner was one of those CCGs which kept a large cult following after more than a decade after its end, you can enjoy how many people have come out of the woodwork for the new part of the franchise. It’s going to be big!

Naturally an Android Netrunner plugin will be forthcoming and in it I plan to re-use a lot of the code I wrote for Netrunner, so there’s that 😉

EDIT @ 02/07/2013 : I’ve moved the installation instructions on to the dedicated page for this game definition. Please follow the step-by-step installation instructions for Netrunner CCG there.

 

Once everything is set up, you need to find someone to play with. Once you do, one hosts and game and the other joins. Leave the two-sided checkbox checked and once the game is started, load your decks. Things should be fairly intuitive but keep in mind 4 basic things in relation to the OCTGN engine plugin.

  • First thing you do after you load a deck is Setup (Ctrl+Shift+S)
  • At the start of your turn, declare it with F1
  • At the end of your turn, declare it with F12. Make sure the game announces that your turn has ended and is not expecting you to discard down to your max hand size 😉
  • Play cards from your hand with the “Pay and Install”  (double-click with the mouse) or “Play at no cost”

And some more advanced stuff starting from version 2.1.x

  • Most card will automatically trigger their abilities when played/scored/rezzed so you don’t need to do anything else. Pay attention to the notification area for messages from them.
  • Cards with abilities which increase your MU, Hand Size, etc will automatically increase it when they come into play and reduce it when they go away, as long as you don’t drag&drop them in or out of the table manually. Use the built-in commands for that. Rez, Derez, Trash etc
  • Cards with abilities you activate while they’re in play (like programs, agendas, upgrades etc) will trigger them when you double-click on them. If they have more than one ability (such as most icebreakers), the game will prompt you to select one and pay the appropriate cost.
  • Cards which reduce the cost of other card’s abilities, will also automatically work. If you have a card which has tokens which can pay the cost for activating icebreakers, they will be automatically used when you use one such ability. If you have more than one of these cards which can affect such costs they will be triggered in the order you put them on the table. If you wanted to use the tokens from another card instead, you can simply drag the token manually to the other card afterwards.
  • There are cards which will automatically do damage to your opponent and thus discard random cards from their hand. Due to the way OCTGN works, this may crash the game if you opponent was manipulating the same card. There is a warning before all such damage that will warn you to inform your opponent to be hands-off while the effect is in progress. This warning will also give your opponent the opportunity to play cards which prevent damage.
  • Yes, cards which reduce damage taken have been automated and work automatically depending on the kind of damage you take. As before, they too get triggered by the order they’ve been put on the table, so if you didn’t want to lose the counters from one particular card, just drag them in from the card you did want to use.
  • Some cards require that you select a target from the table or your hand. Do this before you play or activate the card. If you don’t the action will abort and the game will inform you to select your targets first. As always, keep your eye on the chatbox for such warnings.
  • Cards which have effects which trigger at start/end of turn (i.e. refilling bit markers on them) will automatically work.
  • If you don’t like some or all the automations, you can disable some or all of them. Go to the game menu, and you can disable damage automations (i.e. your opponent will have to use the damage options manually but those won’t automatically use the damage prevention cards), Turn Start/End automations and Play/Score/Rez Automations (i.e. mostly everything). If you find that you’d rather do everything manually, just disable all of them and you’ll have an experience as with most generic card game engines.

Phew, that should be the most basic things about the new automations. In general if you’re not sure if a card is automated, simply play it and see what happens. You will be surprised at how many cards just work.

You can find updates discussions about the plugin in the forum

Enjoy!

 

Για τους οπαδούς του φον Πλεύρη

Κάλιο αργά παρά πωτέ που λένε. Ανακάλυψα σήμερα τον άγριο ξεφτιλισμό του Κωστάκη Πλεύρη μέσα απο το κείμενο Κώστας Πλεύρη: Ο Ιεροεξεταστής της Ιστορίας το οποίο είναι απλά εκπληκτικό και ως πρως τον ξεμπροντιασμό του φασιστάκου, και ως πρως το χιούμορ που διαθέτει.

Είναι μακρύ αλλά αξίζει πολύ να διαβαστεί.  Ένα μεγαλο εύγε στον συντάκτη.