Contact Info / Websites
Fall of Cybertron
8/22/12 by PsychoGoldfish
So I started playing Transformers: Fall of Cyberton yesterday and I am having a really hard time staying away from it and getting any work done.
The story so far is great, and there's almost a seamless transition when you switch from the autobot campaign to the decepticon. Its all just one continuous story told from both perspectives.
I find myself nerding out a lot, so many fun moments so far. For example, in the later Optimus Prime levels you have to haul ass in truck form to reach some objectives. On the way you can just run down decepticons and they go flying. I found myself re-enacting this scene from the transformers movie, complete with the aerial transformation/flip attack and an awesome rendition of "You got the touch"
I also re-created optimus dying... a lot...
There's also some fun easter eggs. In one place you can sit down and watch TV while your base is being attacked because NOBODY MAKES ME MISS MY SOAPS!
There's another fun one where a door switch transforms into a retarded dancing robot that had me laughing pretty good.
The characters play mostly the same, but the unique special abilities they get vary enough to really change the play style for each character's levels.
You can't get into cover Gears of War style, but you CAN switch your gun arms, so you can use cover without needing to be glued to it.
I'm not even half way through it yet, but I'm hooked. And I haven't even wet my dick in the multi-player yet.
This is definitely a must own for transformers nerds, and anyone who enjoys a good 3rd person shooter will have a lot of fun with it too. Maybe I'll see some of you on XBL.
New Food Blog
8/18/12 by PsychoGoldfish
So today I decided to start a new food-oriented blog. I had the wife record some video while I was making dinner and use that for my first post. Was pretty fun, and I'll definitely be doing more.
High Score/Medal Hacking
5/11/12 by PsychoGoldfish
Ever since I built the original Flash API tools, people have been reporting people that have hacked their scores to ridiculous levels, or hacked some kind of stat variable to unlock a medal, etc etc.
We put a lot of effort into keeping communication between your games and the API gateway fairly secure using all sorts of encryption and seeding techniques, but at the end of the day, if a game has no internal security measures, our API can't do anything about these "hackers".
To be fair, none of these cheaters are actually hackers, they are typically just dumb kids who have learned about a program called CheatEngine (or something similar). This simple cheating app allows any user to manipulate memory resident values, such as scores or in-game statistics.
Most users use cheat engine to check for values that change. If they know the exact value of the change, its even easier, but not necessary. Here's some examples:
A user starts a game with a score of zero. They tell CheatEngine to search for all memory values that equal zero. This search yeilds a large list of possible memory addresses, so they can't easily cheat yet.
The user kills an enemy and now has a score of 100 points. Now they tell CheatEngine to search within the last list of memory addresses for a value of 100. Cheat Engine narrows down all the possible addresses and comes up with a smaller list.
The user keeps repeating this search until they have narrowed the value down, then they can change it to whatever they want.
Using a similar search they can look for values that have changed (up or down) to figure out where you store things like hit points and get themselves unlimited health in any game.
So how do you combat these cheats? Well, there is no real 100% cheat proof solution, but if you understand how these cheat engines work, you can do a few things to detect when something fishy is going on.
One of the first things you should do is use getter/setter functions for sensitive variables rather than setting them directly. If you use OOP classes, you can make your score/health.etc variables private and use a getter/setter function to alias them. If you still code on timelines in AS2, you can just make a setScore(value) and getScore(value) function on _root or something to that effect.
In these functions you can apply some creativity to keep track of how much each value has changed since the last time those functions were called. Here's a small example using crude AS2 (I didn't test any of this, but you should get the idea):
// this is the variable we will store our current score in
score = 0;
// this is the variable we will use to store a value used to verify our score
verify_score = 0;
// This is a random number we will use to create our verify_score value.
// Using a random number will make it harder to figure out our scoring algorithm.
random_seed = Math.random() * 5;
// this is the function we use to set add points to our score
function updateScore(points) {
if (!cheatDetected()) {
score += points;
// this will generate a number that's almost impossible for a person to change correctly.
verify_score = Math.sqrt(Math.round(score/random_seed));
}
}
// this is used to detect whether the score was changed manually
function cheatDetected() {
// these will both be zero if no score has been added
if (score === 0 && verify_score === 0) return false;
// using the same foruma from the updateScore function we can check to see if our current score calculates
// to the same value it did when it was set using the above function.
return (verify_score != Math.sqrt(Math.round(score/random_seed)));
}
// This is used to either get the score, or return zero if the user cheated. Use this when posting high scores.
function getScore() {
if (cheatDetected()) {
return 0;
}
return score;
}
You can use a variety of methods like MD5 hashes, or something more custom to create your verification values, just make sure it's not something you can easily calculate without having access to the source code. using random seed values will make it even harder since every time they play the formula will change.
Keep in mind these formulas do use extra CPU, so you wouldn't want them running on every frame or interval on a high-load game, but for stuff like scores and health, this is a nice technique.
I strongly recommend getting a copy of CheatEngine and trying to cheat your won games.
Breaking news!
9/12/11 by PsychoGoldfish
I just took an amazing dump! It must have weighed nearly 3 lbs and was about 18 inches long. I named it Luis because of it's light mocha color and it's slight scent of re-fried beans.
...and I'm already regretting this decision.
Programming-wise, the 2 services aren't all that different. DirectTV has way more sports options, which I don't really give a shit about, but it's lacking G4TV now... so I am missing out on all those Ninja Warrior and Cops reruns...
The biggest issue I have with DirectTV is that after all these years their receivers are still way behind what everyone else is doing.
The program guide browsing ins sluggish as hell and the dvr doesn't have a one-click auto-tune option, which SHOULD be present on ANY modern receiver.
Dish Network's DVR used a single receiver with RF remotes to connect 2 tvs. When you did this with your DVR receiver that meant your second tv had full dvr functionality. You could pause/rewind live tv on both the tvs that used it etc...
Direct TV's pitch to counter what Dish does is that they give you your HD DVR for your main TV and a second HD receiver that can connect to your DVR from any room. What they don't tell you is this second receiver does not have any basic dvr funtionality built in at all. The only options you have are to tell the DVR to record a single show or to play back something you have already recorded.
And the playback is like using windows media center. It streams the video, has to buffer, and the skip features for skipping commercials and such are slower than shit.
At least I get that low "new customer" rate and all the equipment was free, but after my 2 year contract is up, I'm pretty sure I'll be going back to Dish Network.
</rant>
Green Beer Day/Radio Show
3/15/11 by PsychoGoldfish
It's that time of year again, you can wake up and shower with your Irish Spring, eat a bowl of Lucky Charms, pick up an ice cold Shamrock Shake at McDonalds and have a few pints of green beer.
Whatever your tradition is, be sure to tune in on RadioGrounds this Thursday at around 2:00 PM EST (NG Time) for my annual St Patrick's day extravaganza. I'll likely be simulcasting via stickam again, and this year I have a nice surprise for everyone. The debut of my latest audio collaboration featuring Merlin and Hania.
Our masterpiece took nearly 5 days to complete and features 100% live instruments and mind-blowing vocal performances.
You better tune in!
Lol Mike...
2/24/11 by PsychoGoldfish
- Mike -: the philly flash user group is having a meeting here tonight
- Mike -: so i'm busy washing all the dicks off the chalkboard walls
- PsychoGoldfish -: HAHAHAHAHAHA
Super gold fish to the rescue
There are a lot of strangers down there at my door. They came to my door because they were angry with me. I want to talk to the airplane driver in the driveway because I want him to go away. Then I thought about what to say to the airplane driver. It was that I had another word to the world and the airplane driver. I said airplane driver go away please. He was trying to kill me but I got away I went to my house and I fed my fish some food and I took a nap.
