Yrr
Joined: 8/10/2006
Posts: 289
Location: Germany, Bayern
Diablo 2: Godlike: Beat the game on all three difficulties single-segmented on hardcore. Epic Fail: Get killed by Diablo (Baal) on Hell mode on hardcore. Nothing special: Beat the game without taking damage
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
Yrr wrote:
Nothing special: Beat the game without taking damage
This is virtually impossible even if you try very much.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
Yrr
Joined: 8/10/2006
Posts: 289
Location: Germany, Bayern
moozooh wrote:
Yrr wrote:
Nothing special: Beat the game without taking damage
This is virtually impossible even if you try very much.
Yeah, I know, but at least this wouldn't be that kind of achievement every player has. But seriously, Left 4 Dead has a similar achievement (this is where I have derived mine from), which is also probably ridiculously hard.
Tub
Joined: 6/25/2005
Posts: 1377
yeah, just run out of town and watch a firewall materialize below your feet. instant damage. there's also my favourite damage type, which cannot miss, cannot be blocked, cannot be dodged/evaded/weapon blocked, cannot be absorbed and cannot be reduced: a simple poison cloud.
m00
Joined: 7/2/2007
Posts: 3960
Can't be dodged? I avoid poison clouds all the time. You just have to recognize the precursor; I don't think there are any attacks in D2 that don't have some kind of signal you can recognize.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
gia
Player (109)
Joined: 5/3/2006
Posts: 223
if you go by l4d rules it counts when the game loads, so you only have to do river to diablo or wsk2 to baal. Which means doable by the few that go with damage reduction builds.
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1355
Location: Canada
Yrr wrote:
moozooh wrote:
Yrr wrote:
Nothing special:But seriously, Left 4 Dead has a similar achievement (this is where I have derived mine from), which is also probably ridiculously hard.
No. Left 4 dead has 6 "no damage" achievements, but none of them are that ridiculous. There's one for killing a tank without taking damage from it, one for killing a witch without taking damage from it, one for taking no damage after getting covered in Boomer bile, one for taking no damage after a finale starts, one for taking no damage from friendly fire, and "Nothing Special", which is for taking no damage from special infected. Maybe if the Diablo achievement was "No damage from bosses", it would work.
Yrr
Joined: 8/10/2006
Posts: 289
Location: Germany, Bayern
I'm not sure if a takes-no-damage run would be possible if you were skilled enough. It would however require insane luck and reflexes. With tool-assistance however, this should be doable.
Chamale wrote:
No. Left 4 dead has 6 "no damage" achievements, but none of them are that ridiculous. There's one for killing a tank without taking damage from it, one for killing a witch without taking damage from it, one for taking no damage after getting covered in Boomer bile, one for taking no damage after a finale starts, one for taking no damage from friendly fire, and "Nothing Special", which is for taking no damage from special infected. Maybe if the Diablo achievement was "No damage from bosses", it would work.
Really? I thought it would be something impossibly hard. But yeah, taking no damage from bosses shouldn't be that hard. A good sorceress can surely do Baal-runs damageless.
gia
Player (109)
Joined: 5/3/2006
Posts: 223
nah, it only needs good planning and patience. You got damage reduction (unless im wrong at min damage is 1) and in any case you got multiplayer and I sure have done this achievement that way a dozen times.
Yrr
Joined: 8/10/2006
Posts: 289
Location: Germany, Bayern
gia wrote:
nah, it only needs good planning and patience. You got damage reduction (unless im wrong at min damage is 1) and in any case you got multiplayer and I sure have done this achievement that way a dozen times.
Damage reduction reduces damage you take, but it does not negate it. So you still will take damage (even if not that much), unless you meant absolute reduction (however a lot of monsters will do way more damage than you can possibly negate). In multiplayer it would be probably relativly easy to go for no damage though.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
Starcraft Close Call: Complete a level with a hero unit at less than 10% of its' max health. Speedy: Complete a level in 10 minutes or less. Research Specialist: As the Protoss, fully research the Terran or Zerg tech trees. (Brood War only)
Previous Name: boct1584
Yrr
Joined: 8/10/2006
Posts: 289
Location: Germany, Bayern
There is a game called Achievement Unlocked where you simply have to unlock 100 achievements to beat it. OK, doesn't have so much to do with the actual topic, but I thought I'd mention it.
Sir_VG
He/Him
Player (40)
Joined: 10/9/2004
Posts: 1913
Location: Floating Tower
Yrr wrote:
There is a game called Achievement Unlocked where you simply have to unlock 100 achievements to beat it. OK, doesn't have so much to do with the actual topic, but I thought I'd mention it.
Kinda fun, actually. I'm stuck on 072, 074, and 075 (turn blue, orange, and black), otherwise I have them all. Edit: Got it. Stupid cheap trick to get them Number keys I can do it in 328 seconds. w00t.
Taking over the world, one game at a time. Currently TASing: Nothing
Joined: 7/2/2007
Posts: 3960
Given that one of the accomplishments is "ask for help", I didn't feel too much like a cheater for actually reading the descriptions of some of the achievements. Still, yes, an amusing game.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Active player (328)
Joined: 2/23/2005
Posts: 786
There are so many for StarCraft it's not even funny. Too bad we can't really implement them, except maybe in SC64, but who'd want to play that? Absolute Victory: On the last Protoss mission of the original campaign, destroy every last zerg before killing the Overmind. Splat: Destroy 8 friendly units with one badly-placed Spider Mine. Get Out Fast: Defeat Terran 10 "The Hammer Falls" of the classic campaign in less than 10 minutes. Feel the Rush: Beat all 30 levels of the classic campaign on the highest speed, without saving. (Not necessarily in the same sitting, though) Tech Snatcher T: As a Terran player, steal 6 or more enemy add-ons in a campaign level. Tech Snatcher Z: As a Zerg player, infest 6 or more enemy command centers in a campaign level. Suicide Squad: As a Zerg player, kill at least 20 enemy buildings and 50 enemy units with Infested Terrans on a campaign level. Sunken Rush: As a Zerg player, beat a campaign level without building any units besides drones. (Overlords don't count.) Tactical Strike: As a Terran player, launch a nuke that kills at least 30 enemy units in a campaign level. Fate Averter: In a campaign level, save many units or buildings from a scripted attack meant to destroy them. Show Me The Money: Acquire 20,000 or more minerals and gas in a campaign level. I Have a Job To Do: In a non-installation campaign level, destroy over 50% of destroyed enemy units (buildings count) using heroes that will fail the mission if they die. Max Production: Create 200 worker units. Quick Insertion: Beat Terran 6 "Norad II" of the original Terran missions in less than 10 minutes, and without destroying any enemy defensive colonies. I could go on all day...
gia
Player (109)
Joined: 5/3/2006
Posts: 223
Finally went to finish the server code (well the part that communicates with emulators), if anyone is interested on modifying an emulator and/or coding a lua script that checks for an "achievement" to complete the thing I wont bite. At one point I was thinking on checking how lua is done on snes9x but don't have vs2008... Anyway First the player logins:
http://domain/ach.bin?exec=login&login=mylogin&pass=mypass
returns:
'B' -> Banned
'T' -> Tempbanned
'F#' -> Warning #, if # reaches max then tempbanned, max is 10 iirc
'S
username=?
sessionid=?
timebetweenpings=?
failedattempts=?' -> Success, returns data
Then they load a game, ie. Mario Bros. The emulator must have a file that translates roms to "game id", ie. 100. The emulator has a zip file 100.zip containing whatever it needs (lua scripts). If it doesn't it checks if it exists in the server or if its copy is outdated and redownloads if required http://domain/ach/<gi>.zip, haven't thought of how should the emulator check if the zip files are outdated, don't know all the possibilities, can always return a date on the function down there. With this the emulator knows what achievements are available to the game. It is only missing the state of those achievements for the player.
http://domain/ach.bin?exec=gameload&gi=100&si=5
si = sessionid received at login
gi = gameid, the emulator must know this on its own
returns:
'B' -> Banned
'T' -> Tempbanned
'O' -> Session over, login again
'F' -> game id doesn't exist
'S
a,b,c,d,e
a,b,c,d,e
a,b,c,d,e
...' -> Success, returns an extra line per achievement state
a=achievement id
b=total players
c=total players achieved
d=achievement "value" stored for player
e=date it was saved
f=date of the start of play session back then
Now the emulator can display a screen with all achievements and their progress if they want to. To keep the session alive the emulator pings (the server's expected ping time was sent at login).
http://domain/ach.bin?exec=ping&si=5
si = sessionid received at login
returns:
'B' -> Banned
'T' -> Tempbanned
'O' -> Session over, login again
'F#' -> Warning, # is the warning level, right now if 10 it tempbans the ip/player, raised when the ping is sent too early (has to be sent from 75% to 100% of "timebetweenpings").
'S' -> Success
When the local lua scripts decide an achievement is to be updated/awarded, they contact the server and send data to be verified. Right now I'm working with integer values so they can be sent as GET. But I suppose it should be sent as POST so the data to verify can be more complex.
http://domain/ach.bin?exec=playdata&gi=100&ai=1&si=5&d=23154
si = sessionid received at login
gi = gameid, the emulator must know this on its own
ai = achievementid, the emulator knows because the lua scripts have the value
d = data
returns:
'B' -> Banned
'T' -> Tempbanned
'O' -> Session over, login again
'S#' -> Success data verified (regardless of the outcome of the verification), # is the current achievement value on the server, the local scripts have to decide if the achievement is awarded and play an animation
So an emulator could have an offline mode if they just dont connect at all or just goes for the zip files, and store the achievement values in local files. The guy that coded the achievement would be free to do everything clientside or write code to validate serverside, or do both, I'd say this code would have to be written in javascript since that's something anyone can understand, but whatever is fine.
Active player (328)
Joined: 2/23/2005
Posts: 786
Having recently signed up for The Backloggery gave me a new perspective on the concept of achievements. Since backloggery has their "B" and "C" statuses, I got the idea to list the achievements classes in alphabetical order from easiest to hardest. While that didn't exactly work out, I came up with these categories I think every achievement should fit into: Accumulation: Each achievement for this category keeps a running tally of some number through all playthroughs of the game, such as score acquired, money acquired, or enemies killed, and the achievement is unlocked when the tally reaches a certain amount. These exist as incentive for the player to go out of their way to attain extra points or extra kills now and then, knowing that eventually they will hit that goal. Beating: This category contains achievements that are unlocked through a standard playthrough of the game, and should all be unlocked if the game is beaten (warpless) and the player views the credits. For example, beating World X, or defeating Boss X would fall under this category. Completion: This category contains achievements showing that the game has not only been beaten, but finished completely. Beating the optional bonus bosses, getting 100% items, beating minigames, and completing all difficulty levels would be examples of achievements in this category. Domination: Achievements which are unlocked by playing through the whole game with minimal mistakes. No-death runs, no-damage runs, and no-miss runs would fall under here. There could be separate achievements for different categories of running, such as Any/100%, warped/warpless, and the like. Exhibition: Situational bonus challenges for specific parts of the game. These would be special challenges such as "Killed all enemies in the pit on level 3 without touching the ground" or "Killed the level 4 boss with a hammer. These should be engineered to be interesting or tricky without being arbitrary. Fun: Joke objectives, or rewards for failing. These are not serious achievements. A good example would be the infamous challenge in Punch-Out for Wii: "Knock down Glass Joe 3 times, then let him win by decision". These would include activating or beating the game with cheats, dying in certain ways, wearing specific combinations of clothing, and other arbitrary things. Hardcore: Very special and high-ranked achievements for matching, or nearly matching, world records or speedrunners. These would require long-term dedication to obtain and would not be for everybody. They would probably be split up into multiple achievements for warped/warpless, and the like. Examples would be top-notch speedruns, very high scores, or obtaining Domination-class achievements in long games (we’re talking 8 hours or more) without saving. Limitation: Beat the game with a self-imposed challenge, not using all of the game's features. Examples would be solo-character runs, no-weapon runs, runs that avoid certain powerups or rewards, pacifist runs, and so on. Unlike Domination-class achievements which could be ruined at any moment if you make a mistake, limitations are ongoing decisions by the player. Maximization: Rewards for completing or maximizing values that don't specifically count towards 100% game completion. Examples would include maxing out every stat at 255, bombing every wall in the game, obtaining every type of powerup, or filling a logbook. Repetition: Beat the game a certain number of times. Basically an accumulation award, but for beating the game. Speedrunning: Beat the whole game, or individual parts of the game, in a time limit. The time limit would be a reasonable challenge without being hard enough to classify as Hardcore. Technique: Pull off a trick. Unlike the Exhibition-class challenges, this would simply classify as "getting something to work". Examples from SMB would be Jumping the flagpole, getting 90 1-ups from a Koopa shell, catching a mushroom at the top of the screen, and so on. These tricks could be situation-specific, or be possible in multiple places. Unless I'm missing something, all game achievements can fit into these categories. They could be designated by different colors on the webserver or as they pop up on the screen.
Joined: 3/7/2006
Posts: 720
Location: UK
Statistics would probably show that for all achievements currently in existence for games on the market, 50% Accumulation 30% Beating 10% Completion 10% Domination 9% Technique <1% others ... accurately describes the makeup. Now you're making me want to do the analysis myself.
Voted NO for NO reason
Active player (328)
Joined: 2/23/2005
Posts: 786
The more I think about this, the more I really want to see this put into motion. We need to go and beg a programmer to modify FCEUX for this.
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Gourmet Paradise: Don't damage any bricks: Self explanatory, don't break any bricks throughout the whole game.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
Arkanoid Big Combo: Hit ten or more bricks without your ball hitting the paddle.
Previous Name: boct1584
Active player (328)
Joined: 2/23/2005
Posts: 786
I was bored, so, here's a few more. The Legend of Zelda (More): Scapegoat: Paid every old man their door repair charges in full. Population Control: Left only one living enemy on every overworld screen. A Little Ahead Of Yourself: Got the bow from Level 1 without clearing it, then cleared Level 8 without entering any other dungeon. Heartless: Beat the game with three hearts. Keychain: Acquired 15 keys. The Legend of Zelda: A Link to the Past: Don't Ask For Directions: Beat the game without acquiring a map or a compass. Master Using It: Beat the game with only the Level 2 sword. Careful: Beat the game without upgrading your shield or your armor. Cold Turkey: Beat the game without collecting any bottles. Big Trouble: Beat the game without upgrading your arrows or bombs at the Pond of Happiness. (Wonder if it would be a hardcore challenge to do all of the above at once...) Stop By Later: Gave your sword to the blacksmiths to temper, then collected all 7 dark world crystals and cleared Level 8 before picking it up again. Hurricane Spin: Defeated 5 or more enemies with one spin attack. Good Bee: Killed 50 enemies with the same bee. Good Shot: Shattered a block with the Cane of Somaria to kill four enemies. Hot Potato: Killed a cyclops or a castle guard with their own bombs. Revenge is Futile: Survived a chicken attack for 1 minute without getting hit.
gia
Player (109)
Joined: 5/3/2006
Posts: 223
lol, remember that even if the emu gets done you still need people willing to write the achievement code or everything is useless, sigh. Anyway, checked a bit this lua thing but still dont understand well, anyway is this the best reference of the "specs"? http://cbc.qfox.nl/emulua, from checking sample scripts it looks like when lua runs you can't control the emulator and have to wait until it is finished, there's no callback mode for the scripts so that they execute this or another function while you play. If we continue with my specs and try to mix it with lua (I said javascript, which has the Mozilla C library available https://developer.mozilla.org/en/JavaScript_C_Engine_Embedder%27s_Guide, but lua is already coded in so) and if I understand correctly how this works I notice these functions would be a must: emu.registerbefore(function f), emu.registerafter(function f), emu.registerexit(function f), but they only exist on Gens. Also I guess scripts get autounloaded once they get to the end of their files, but in this case that would have to change so they would remain loaded so their callbacks have a chance of getting called. My other doubt is if multiple scripts can be loaded, at least in the currently coded solutions. It would be better if the answer was yes. My original idea for achievement scripts was like this:
//definitions
...
//resource or data preload/setup
//this function gets executed by the emulator at game load, preferably with a progress bar for all achievement scripts that get loaded
//Anything heavy should go here
function Preload()
{
}
//code executed before every "frame"
function PreThink()
{
}
//code executed after "frame"
function Think()
{
    //code executed per frame, check stuff here
}
//offline (not) allowed for this achievement (due to coder wanting to keep his validation code protected)
//if offline not allowed then empty, gets called by emu if submitDataToAchievementsServer is called
function validateOffline( data )
{
    //validate as if this was the server
}
//called by validateOffline or called by the emulator when the server replies to the validation request
function checkValidationResults( answer )
{
    //save new values to local file if offline allowed
    //possibly call awardAchievement
}
//as convention, called by checkValidationResults if required
function awardAchievement( achievementValue )
{
    //display image & text
}
And inside the coder could make use of whatever api calls the emulator provided plus new ones to help with these achievements ie:
submitDataToAchievementsServer
saveToFile //dont see it on the list, only savestate, fine saveToAchievementFolder if you want to be safe
readFromFile
But thinking about it there could be problems, first the Think functions would be called every frame, but stuff happens in between frames. Would it be better if they were instead registered functions based on ram watch like mode or breakpoint mode perhaps? (are those possible/dont break emulation anyway?), or maybe they aren't necessary for any kind of achievement check. ie:
//when the emulator detects a change on address DDDD it executes Think() before
emu.registerFunctionAsRamWatch( Think, 0xDDDD, CHANGE_ANY, EXECUTE_BEFORE );
//If the emulator detects it is about to execute whatever code is in DDDD then it executes Think() afterward
emu.registerFunctionAsBreakpoint( Think, 0xDDDD, EXECUTE_AFTER );
Then there's the problem that I don't think lua on emulators allows what this post describes. If it does cool though.
Player (246)
Joined: 8/6/2006
Posts: 784
Location: Connecticut, USA
This thread is incredible. I had thought of approaching these boards about a year ago with the same idea, but I deemed it too ridiculous / technically implausible. I shouldn't have doubted the coders though. Anyway, I actually wrote some achievements for Super Mario World way back when. I have copied and pasted them here (I hadn't really thought of witty names): - Get a 1-UP by killing a Koopa - Collect your first 100 coins - Find a key and use a secret exit - Hit all of the switches in the Switch Palaces - Find and collect a 3-UP - Kill at least one of each killable enemy - Stay airborne for x seconds - Raise each different color of Yoshi at least once - While riding Yoshi, swallow a flashing shell - Complete the Star Road - Complete the Special Stages - Beat the game - Complete the game in under (reasonably challenging) time - Find all 96 exits - Complete the game in as few levels as possible I swear there were more but I can't find them. My thoughts on optimal achievement breakdowns, having been an X360 achievement junkie for a few years: 1) Use achievements that occur naturally as you progress through the game - Many of these you cannot avoid and are easy to get (or would have a harder time avoiding than not; e.g. "Ride Yoshi once") - Missable, but probably part of a typical playthrough ("Find and use a Star Road warp) 2) Use achievements that have the player doing something they normally wouldn't do in a game, or otherwise wouldn't think of that doesn't necessarily have anything to do with completing the game (e.g. killing one of each enemy; players may have to do some work to actually kill some of the enemies in SMW) 3) Use completion achievements. These are usually geared toward games that have collectibles or can otherwise be completed 100%. Usually broken up into "Collect all of item x" "Collect all of item y" etc. and finally the "Beat the game 100%" achievement. 4) A few "Beat the game" achievements. Usually just one for completing the game normally, one for any secret ending or different difficulty level, one for a speed run, and one for a minimalist run (e.g. never collect powerups or in an RPG, low-level) What to avoid (disclaimer: some people enjoy tedium, so some may not agree with me): - Kill x number of enemies, unless the game is something like Smash TV. I would hate to have to kill 1,000 goombas in SMW, and it wouldn't add to the game. In SMWs case, something reasonable like kill 100 Koopas would be a bit different. - Too many "Beat the game" achievements. Some people just don't want to play the same 30 hour game fifteen times to get all the achievements. - Nearly impossible achievements. While it's nice that like fifteen people in the world can brag about how they completed Through the Fire and Flames on Expert on GHIII, some of us won't even touch the game because we already know that we can't complete all the achievements without pouring in a silly amount of time into the game (this is the point that I feel most people would refute me on; don't get me wrong, I'm all for difficult achievements, but I think it needs to be reasonable... which is subjective unfortunately). EDIT: Some Xbox360 games that have good examples of a good achievement list (better than my SMW list): Resident Evil 5 Bioshock The Orange Box
Joined: 9/13/2008
Posts: 30
eternaljwh wrote:
Mega Man 2 Quick Enough: Beat Quick Man's level without getting hit from lightbeam, nor using Flash Stopper.
I'm horrible with achievement names, but... Even Quicker: Beat Quick Man's level without getting hit from lightbeam, nor using Flash Stopper, AND grab the extra life.