Archive for December, 2006

HackThisSite Founder Convicted

From http://www.digg.com:

Jeremy Hammond was sentenced to 24 months in federal prison, followed by 3 years of no contact with HackThisSite.org, similar sites, or anarchy related groups in the Chicago area.
From the story:

He was accused of accessing ProtestWarrior.com’s database with a reverse PHP shell, and getting a list of credit card numbers that totalled into the thousands. The prosecutors tried to get Jeremy nailed for 2.5 million in damages, but there was no actual damage done. It was said that Jeremy planned “to make donations to humanitarian and charity groups opposed by the Protest Warrior Web site.”

read more | digg story

Sorry, I came across this in the middle of the week on Digg, but I’ve been too busy to comment on it until now. It’s really weird to come across someone you actually know on a news site like Digg, especially in this context.

I care about this because I knew this guy before HackThisSite became what it is, back before it was just a little hacking toy along with loads of other similar pages (like “Anarchy”, a sort of wiki without admins, and no guidelines for content) on his website, hulla-balloo.com. He was active in the Qbasic scene around the same time as me, and came up with a rather nifty little game called Shellshock. Vplanet gave it 23/35 on their crazy rating system, which is quite a good score, I think – (though I’m just saying that really because the best score I ever got was 15/35).

I didn’t even know him, but I saw that he had his own server and domain name setup, so I sent him a really formal email asking for some advice on doing the same. He offered me all the free webspace I wanted for my own silly projects, and full access to his server. I ended up hosting my first real website there.

The only thing he asked me for in exchange is that I didn’t overwrite any of his files.

It looks like his life has gotten a little messed up in the last few years. It’s awful that things have come to this.

* 5 Comments

Seriously, go play Phoenix Wright already.

The other day I posted a list of things I’d need to do to the distraction engine to have it cope with my new miniRPG, and I casually mentioned “Finish the battle engine” as something silly that still needed to be finished in the next few days. I guess I wasn’t thinking straight. I’ve haven’t mucked around with the code in this thing for about six months now, so I had no idea how much work was going to be involved. It seems there are some major gaps in my assessment of the situation…

So I had a look through the code, and worked out where I stand, and exactly what I need. Here’s what I have at the moment:

– When the “battlemode” flag is enabled, I start an ATB system, where the turns of players are queued up.
– Each action has a name. On a player’s turn, the action associated with the hero’s name is automatically called. (e.g. on Squall’s turn, the action “Squall” is called automatically.)

Each action has a type, with a couple of variables – “size”, “cost”, and a generic array called “link”. The current implemented types are:

LIST
Default for selections. Specifify “size” as the number of elements, link[0], link[1] etc are the actions to call (by name).

HERO_LIST
As list, except the hero’s name is shoved in front of it, so that when player1 selects “Attack” and player2 selects “Attack”, they do different things, because the engine acts like you’ve selected “Player1_Attack”.

SKILL_LIST
As list, except you also specify a “cost” for each link, and this is displayed beside the action, along with the SP.

ACT
So far, this doesn’t really do anything. It calls a routine which processes a basic script that’s coded into the links of the action. This scripting language supports the following commands, so far:
end” – destorys all textboxes, and continues with the ATB.
damage” – so far, it adds “floating” damage to the caster, displaying the floating text with it.
wait” – waits a given number of frames
link” – runs the next action in the queue.

To clarify, here’s how that structure currently looks with the variables hardcoded into the engine:


void init_stats(characterclass *heros, characterclass *enemies, actions *action){
  //This is a temporary routine - eventually, everything will be inputted
  //externally.
  
  heros[0].name = "Remy";
  heros[0].strength = 14;  heros[0].defence = 10;
  heros[0].intelligence = 27;  heros[0].speed = 15;
  heros[0].limit = 0;  heros[0].time = 0;
  heros[0].hp = 9999; heros[0].maxhp=9999;
  heros[0].sp = 30; heros[0].maxsp=30;
  heros[0].action = heros[0].name+"_default";
  
  //Every inital action will have to be a list - unless the character is
  //beserked or fighting with the enemy or something.
  numactions=7;
  action[0].name="Remy_default";
  action[0].type=HERO_LIST;
  action[0].size=3;
  action[0].link[0]="Attack";
  action[0].link[1]="Skills";
  action[0].link[2]="Item";
  
  action[3].name="Remy_Attack";
  action[3].type=ACT;
  action[3].size=3;
  action[3].link[0]="damage";
  action[3].link[1]="120";
  action[3].link[2]="end";
  
  action[4].name="Remy_Skills";
  action[4].type=SKILL_LIST;
  action[4].size=10;
  action[4].link[0]="Skills"; 
  action[4].link[1]="Smash"; action[4].cost[1] = 30;
  action[4].link[2]="Hyper"; action[4].cost[2] = 25;
  action[4].link[3]="Trip"; action[4].cost[3] = 20;
  action[4].link[4]="Bomb"; action[4].cost[4] = 15;
  action[4].link[5]="Double"; action[4].cost[5] = 10;
  action[4].link[6]="Refresh"; action[4].cost[6] = 15;
  action[4].link[7]="Protect"; action[4].cost[7] = 20;
  action[4].link[8]="Meditate"; action[4].cost[8] = 20;
  action[4].link[9]="Focus"; action[4].cost[9] = 10;
}      
   

So… I guess this is where I need to go from here:

– Add more actions and list types (e.g. Inventory support, Limit breaks).
– Expand the ACT action to do something more useful, i.e.
* draw battle animations, (need to think about this one)
* deal actual damage
* turn status effects on and off
* trigger sound effects
– After that, I need to add enemies to the mix
– Then, mortality. What happens when everyone dies? What happens if you kill all the enemies?
– Leveling up, I guess, is next. Should probably be handled in a generic way, i.e. all enemies carry a certain about of stuff, including XP points.
– When I get that far, the next step is to have the heros walk about, get into a fight, finish the fight, and walk on. when I’ve done that, the basics of the battle engine will be complete.

I’ve also been reading up on A* Pathfinding. I’m pretty sure I understand how it works, but it’s going to take me a few days on top of the battle engine to implement… I think it’s a good idea to implement it, as it’ll make a lot of things down the line much simpler – but I couldn’t help nagging myself while reading about it. I should really be making a game, not coding an engine.

* Post a Comment

Objection!

Screenshot

I’m going through something of a Phoenix Wright phase at the moment. I loved this quirky little game when I first played it on the Nintendo DS, and couldn’t wait to play the sequel. Only problem is that Capcom aren’t releasing it over here until next March for some reason, even though it’s out in Japan, and it’s already got a full English translation!

So anyway, I ordered the Japanese version a few weeks ago. I’ve already finished it, and I want more! There’s already one more game in the series I’ve yet to play, and a fourth in the works, even though Europe at this point only has one.

There’s a point to all this rambling – I came across something really cool while searching for info on the third game, and had to share it : It turns out the first three Phoenix Wright games were originally GBA titles in Japan, and the new NDS versions are remakes.

Well, someone has gone to the effort of making an unofficial translation to the third game in the GBA series! You can find out all the details here: Gyakuten Saiban 3 Fan Translation Project. They’ve translated the entire first case. And because it’s a prequel to the first two games, there are no spoilers, so it’s a great introduction to the series. If you’re reading this, go check it out.

You may also need to find the GBA Rom. I’m not going to host it or anything, but it’s not hard to find. Try an emulation site like EMUParadise.org and search for the Japanese ROM.

Right now I have to take a short break from making games, unfortunately. I’ve got a performance review at work next week, and while normally I’m totally opposed to taking my job home with me, how I do at this interview will affect my pay for next year. So for this weekend and the rest of next week, I’ll be swatting up on procedures and technical documents. It’s boring as hell, but I guess it’s just one more week…

* 1 Comment