Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

What language was Diablo written in?

Name: Anonymous 2011-12-19 4:10

I really love Diablo (the first one, the second ruined the franchise but getting rid of the atmosphere and making it about collecting items as currency) and want to know what language it was written in. Also, I'm currently playing on US East if anyone wants to play with me.

I really wish Blizzard would fix the fucking hacking though. It should take them a single engineer to do it at this point.

Name: Anonymous 2011-12-19 4:26

COBOL

Name: Anonymous 2011-12-19 4:32

>>1

That depends on what the hacking is. Stuff like making the player run faster than physically possible is detectable, but stuff like seeing through walls, or parts of the map that are not yet exposed is implemented entirely on the client side. In FPS games, you might be able to detect movement patterns for auto aim, but an aim bot could always emulate a good human player more realistically. For the hacks that give the player extra knowledge, you'd have to detect the playing continuously acting on this knowledge, over and over again. But how do you differentiate this from luck? Or maybe they just know the game really well, and they can make a good guess for the missing information? Maybe the player isn't hacking at all, but is just really really good at the game? In either case, it will be frustrating for the other players that are constantly defeated by ey, and ey will likely be accused of hacking due to ey's performance.

I heard that in some tournaments, participants are required to run software that monitors all activity running on their computer while they play, so that tools for hacking can be detected. I see this as a violation of privacy though.

Name: Anonymous 2011-12-19 4:34

>>3
I'm actually talking more about hacking character's stats and items. Also even back then people used to attack in town and do crazy damage. It was ridiculous.

Name: Anonymous 2011-12-19 4:46

This is the first google search result for "What language (was|is) Diablo written in"

Name: Anonymous 2011-12-19 4:49

>>4

tee hee hee sounds like fun! Someone could probably solve the fake stats problem by storing the stats on the game server side, with the player's account. This would solve it if there was only one official server, or one network of official servers that could share data. If the servers were all temporary and hosted by players, then maybe a server could send the player some kind unforgeable log of the player's experience. I'm not sure how other servers could verify the log though. I need to learn more about those types of things.

Name: Anonymous 2011-12-19 5:31

I'm still waiting to know the language! inb4 asm

Name: Anonymous 2011-12-19 5:34

It's written in Lisp like all great games.

Name: Anonymous 2011-12-19 5:42

>>8
obligatory LIST IS SHIT

Name: >>9 2011-12-19 5:43

oh god what have I done? I love you LIST!!

Name: Anonymous 2011-12-19 5:44

It might have been written in C#.

Name: Anonymous 2011-12-19 5:58

It might have been written in REBOL.

Name: Anonymous 2011-12-19 6:00

It might have been written in PROLOG.

Name: Anonymous 2011-12-19 6:01

It might have been written in RUBY dess.

Name: Anonymous 2011-12-19 6:05

>>14
desu

Name: Anonymous 2011-12-19 6:07

>>14,15
LOL!

Name: Anonymous 2011-12-19 10:35

>>7
I don't have a copy of the game but if take a look at the symbol table it will probably become apparent.

Name: Anonymous 2011-12-19 11:29

>>1

Diablo II uses the MSVC runtime. Some failed assertion messages spit filenames ending in .c. This evidence suggests Diablo II was written in C.

Name: Anonymous 2011-12-19 11:45

>>18
if it has vtables and allocates 6 kilobyte structs on stack, then it's sepples.

Name: Anonymous 2011-12-19 12:44

>>18
What are you talking about?

"C:\\DIABLO\\retail\\ENGINE.CPP"
"C:\\DIABLO\\retail\\SOUND.CPP"
"C:\\DIABLO\\retail\\PALETTE.CPP"
"C:\\DIABLO\\retail\\dx.cpp"
"C:\\DIABLO\\retail\\SCROLLRT.CPP"
"U:\\DiabloUI\\Ui\\Focus.cpp"
"U:\\DiabloUI\\Ui\\Title.cpp"
"U:\\DiabloUI\\Ui\\Progress.cpp"
"U:\\DiabloUI\\Ui\\Logon.cpp"
"U:\\DiabloUI\\Ui\\SelConn.cpp"
"U:\\DiabloUI\\Ui\\Sbar.cpp"
"U:\\DiabloUI\\Ui\\connect.cpp"
"U:\\DiabloUI\\Ui\\Doom.cpp"
"U:\\DiabloUI\\Ui\\credits.cpp"
"U:\\DiabloUI\\Ui\\artfont.cpp"
"U:\\DiabloUI\\Ui\\DiabEdit.cpp"
"U:\\DiabloUI\\Ui\\local.cpp"
"U:\\DiabloUI\\Ui\\SelModem.cpp"
"U:\\DiabloUI\\Ui\\SelHero.cpp"
"U:\\DiabloUI\\Ui\\cr8game.cpp"
"U:\\DiabloUI\\Ui\\SelIPX.cpp"
"U:\\DiabloUI\\Ui\\OkCancel.cpp"
"SBLT.CPP"
"SBMP.CPP"
"SCODE.CPP"
"SDLG.CPP"
"SDRAW.CPP"
"SEVT.CPP"
"SFILE.CPP"
"SGDI.CPP"
"SMSG.CPP"
"SNET.CPP"
"STRANS.CPP"
"SVID.CPP"


I can't find a single one ending in .C.

That said, by the looks of the disassembly, they didn't really use C++ features. That's probably the reason the game worked in the first place.

A fucking lot of global variables though. Reminds me of early iD software games. The UI code is also quite bizarre.

I'll check the one that didn't work (Diablo II) later.

Name: Anonymous 2011-12-19 13:04

>>20
In 1994-96, C++ was practically a different language. Compiler support for the newer features wasn't very good, and even if they worked people didn't really know about them yet.

Name: Anonymous 2011-12-19 13:28

>>21
It has always been and will always be shit.

Name: >>20 2011-12-19 13:36

It's me again. Long story short, Diablo II confirmed for full sepples.

Also, half of the functions look like
int __thiscall sub_10037420(int this)
{
  return *(_DWORD *)(this + 600);
}


That function isn't even in an vtable, why is MSVC so adverse to inlining?

Anyway, for the curious:
C:\D2\Source\D2BNClient\BnConnect.cpp
C:\D2\Source\D2BNClient\BnDownload.cpp
C:\D2\Source\D2BNClient\BNetGW.cpp
C:\D2\Source\D2BNClient\BnMessQueue.cpp
C:\D2\Source\D2BNClient\BnSend.cpp
C:\D2\Source\D2BNClient\grid.cpp
C:\D2\Source\D2Cmp\SRC\CelCmp.cpp
C:\D2\Source\D2Cmp\Src\CelDataHash.cpp
C:\D2\Source\D2Cmp\SRC\Codec.cpp
C:\D2\Source\D2Cmp\Src\Count.cpp
C:\D2\Source\D2Cmp\Src\DrwCntxt.cpp
C:\D2\Source\D2Cmp\SRC\FastCmp.cpp
C:\D2\Source\D2Cmp\SRC\FindTiles.cpp
C:\D2\Source\D2Cmp\Src\GfxHash.cpp
C:\D2\Source\D2Cmp\SRC\LRUCache.cpp
C:\D2\Source\D2Cmp\SRC\Palette.cpp
C:\D2\Source\D2Cmp\SRC\PalShift.cpp
C:\D2\Source\D2Cmp\SRC\Raw.cpp
C:\D2\Source\D2Cmp\Src\SpriteCache.cpp
C:\D2\Source\D2Cmp\SRC\SubTile.cpp
C:\D2\Source\D2Cmp\SRC\TileCache.cpp
C:\D2\Source\D2Cmp\SRC\Tilecmp.cpp
C:\D2\Source\D2Cmp\Src\TileLib.cpp
C:\D2\Source\D2Cmp\SRC\TileProjects.cpp
C:\D2\Source\D2Hell\SRC\Archive.cpp
C:\D2\Source\D2Client\CORE\Lng.cpp
C:\D2\Source\D2Client\Core\MemoryPartitions.cpp
C:\D2\Source\D2Client\Core\Video.cpp
C:\D2\Source\D2Client\CREATE\Create.cpp
C:\D2\Source\D2Client\DEBUG\ClientSpotTiming.cpp
C:\D2\Source\D2Client\Draw\dFloor.cpp
C:\D2\Source\D2Client\Draw\dLightMap.cpp
C:\D2\Source\D2Client\Draw\dWall.cpp
C:\D2\Source\D2Client\GAME\Env.cpp
C:\D2\Source\D2Client\GAME\Game.cpp
C:\D2\Source\D2Client\GAME\Msg.cpp
C:\D2\Source\D2Client\GAME\PalShift.cpp
C:\D2\Source\D2Client\GAME\Record.cpp
C:\D2\Source\D2Client\GAME\Roster.cpp
C:\D2\Source\D2Client\GAME\RosterPets.cpp
C:\D2\Source\D2Client\GAME\SCmd.cpp
C:\D2\Source\D2Client\GAME\scroll.cpp
C:\D2\Source\D2Client\GAME\Select.cpp
C:\D2\Source\D2Client\GAME\View.cpp
C:\D2\Source\D2Client\GAME\Wall2.cpp
C:\D2\Source\D2Client\QUEST\Quests.cpp
C:\D2\Source\D2Client\QUEST\QuestsFX.cpp
C:\D2\Source\D2Client\SKILLS\SkillItem.cpp
C:\D2\Source\D2Client\Skills\Skills.cpp
C:\D2\Source\D2Client\Skills\SkillsAma.cpp
C:\D2\Source\D2Client\Skills\SkillsBar.cpp
C:\D2\Source\D2Client\Skills\SkillsMon.cpp
C:\D2\Source\D2Client\Skills\SkillsNec.cpp
C:\D2\Source\D2Client\Skills\SkillsPal.cpp
C:\D2\Source\D2Client\Skills\SkillsSor.cpp
C:\D2\Source\D2Client\UI\automap.cpp
C:\D2\Source\D2Client\UI\char.cpp
C:\D2\Source\D2Client\Ui\CmdTbl.cpp
C:\D2\Source\D2Client\UI\dialog.cpp
C:\D2\Source\D2Client\Ui\editbox.cpp
C:\D2\Source\D2Client\UI\GuildStone.cpp
C:\D2\Source\D2Client\UI\inv.cpp
C:\D2\Source\D2Client\UI\mods.cpp
C:\D2\Source\D2Client\UI\npcmenu.cpp
C:\D2\Source\D2Client\UI\panel.cpp
C:\D2\Source\D2Client\UI\Party.cpp
C:\D2\Source\D2Client\UI\QuestLog.cpp
C:\D2\Source\D2Client\UI\Restart.cpp
C:\D2\Source\D2Client\UI\showitems.cpp
C:\D2\Source\D2Client\UI\SkillDesc.cpp
C:\D2\Source\D2Client\UI\skillstree.cpp
C:\D2\Source\D2Client\UI\spellsel.cpp
C:\D2\Source\D2Client\UI\text.cpp
C:\D2\Source\D2Client\Ui\trade.cpp
C:\D2\Source\D2Client\UI\ui.cpp
C:\D2\Source\D2Client\UI\useitem.cpp
C:\D2\Source\D2Client\UNIT\CUnit.cpp
C:\D2\Source\D2Client\UNIT\Friendly.cpp
C:\D2\Source\D2Client\UNIT\Item.cpp
C:\D2\Source\D2Client\UNIT\Missile.cpp
C:\D2\Source\D2Client\Unit\MonRegion.cpp
C:\D2\Source\D2Client\UNIT\Monster.cpp
C:\D2\Source\D2Client\UNIT\MonUnique.cpp
C:\D2\Source\D2Client\UNIT\Object.cpp
C:\D2\Source\D2Client\UNIT\Player.cpp
C:\D2\Source\D2Client\UNIT\PlayerList.cpp
C:\D2\Source\D2Client\UNIT\PlrSkills.cpp
C:\D2\Source\D2Client\UNIT\UnitGfx.cpp
C:\D2\Source\D2Client\UNIT\UnitMode.cpp
C:\D2\Source\D2Client\UNIT\UnitSnd.cpp
C:\D2\Source\D2Client\Sound\SoundChan.cpp
C:\D2\Source\D2Client\Sound\SoundEnv.cpp
C:\D2\Source\D2Client\Sound\SoundHdr.cpp
C:\D2\Source\D2Client\Sound\SoundInst.cpp
C:\D2\Source\D2Client\Sound\SoundSong.cpp
C:\D2\Source\D2Client\ENGINE\CapAVI.cpp
C:\D2\Source\D2Client\ENGINE\Cursor.cpp
C:\D2\Source\D2Client\ENGINE\Gfx.cpp
C:\D2\Source\D2Client\Engine\GfxUtil.cpp
C:\D2\Source\D2Client\ENGINE\Particle.cpp
C:\D2\Source\D2Hell\SRC\Archive.cpp
C:\D2\Source\D2Hell\SRC\Window.cpp
C:\D2\Source\D2Common\COLLISN\Collisn.cpp
C:\D2\Source\D2Common\COMPOSIT\Composit.cpp
C:\D2\Source\D2Common\DATATBLS\AnimTbls.cpp
C:\D2\Source\D2Common\DATATBLS\Arena.cpp
C:\D2\Source\D2Common\DATATBLS\BeltTbls.cpp
C:\D2\Source\D2Common\DATATBLS\DataTbls.cpp
C:\D2\Source\D2Common\DATATBLS\FieldTbls.cpp
C:\D2\Source\D2Common\DATATBLS\InvTbls.cpp
C:\D2\Source\D2Common\DATATBLS\ItemTbls.cpp
C:\D2\Source\D2Common\DATATBLS\LvlTbls.cpp
C:\D2\Source\D2Common\DATATBLS\MissileTbls.cpp
C:\D2\Source\D2Common\DATATBLS\MonsterTbls.cpp
C:\D2\Source\D2Common\DATATBLS\ObjTbls.cpp
C:\D2\Source\D2Common\DATATBLS\OverlayTbls.cpp
C:\D2\Source\D2Common\DATATBLS\Sequence.cpp
C:\D2\Source\D2Common\DATATBLS\TokTbls.cpp
C:\D2\Source\D2Common\DATATBLS\TransformTbls.cpp
C:\D2\Source\D2Common\DRLG\Drlg.cpp
C:\D2\Source\D2Common\Drlg\DrlgAnim.cpp
C:\D2\Source\D2Common\DRLG\DrlgGrid.cpp
C:\D2\Source\D2Common\DRLG\DrlgLogic.cpp
C:\D2\Source\D2Common\DRLG\DrlgRoom.cpp
C:\D2\Source\D2Common\DRLG\DrlgVer.cpp
C:\D2\Source\D2Common\DRLG\DrlgWarp.cpp
C:\D2\Source\D2Common\DRLG\Maze.cpp
C:\D2\Source\D2Common\DRLG\OutDesr.cpp
C:\D2\Source\D2Common\DRLG\Outdoors.cpp
C:\D2\Source\D2Common\DRLG\OutJung.cpp
C:\D2\Source\D2Common\DRLG\OutPlace.cpp
C:\D2\Source\D2Common\DRLG\OutRoom.cpp
C:\D2\Source\D2Common\DRLG\OutWild.cpp
C:\D2\Source\D2Common\DRLG\Preset.cpp
C:\D2\Source\D2Common\DRLG\RoomTile.cpp
C:\D2\Source\D2Common\DRLG\TileSub.cpp
C:\D2\Source\D2Common\DUNGEON\Dungeon.cpp
C:\D2\Source\D2Common\ENVIRONMENT\Env.cpp
C:\D2\Source\D2Common\Excel\Excel.cpp
C:\D2\Source\D2Common\INVENTORY\Inventory.cpp
C:\D2\Source\D2Common\INVENTORY\InvList.cpp
C:\D2\Source\D2Common\ITEMS\ItemMods.cpp
C:\D2\Source\D2Common\ITEMS\Items.cpp
C:\D2\Source\D2Common\Logging\Logging.cpp
C:\D2\Source\D2Common\Logging\ProfCore.cpp
C:\D2\Source\D2Common\Monsters\MonsterKillsLog.cpp
C:\D2\Source\D2Common\Monsters\MonsterRand.cpp
C:\D2\Source\D2Common\Monsters\MonsterRegion.cpp
C:\D2\Source\D2Common\PATH\IDAstar.cpp
C:\D2\Source\D2Common\PATH\Path.cpp
C:\D2\Source\D2Common\PATH\PathMisc.cpp
C:\D2\Source\D2Common\PATH\PathUtil.cpp
C:\D2\Source\D2Common\Path\PathWF.cpp
C:\D2\Source\D2Common\PATH\Step.cpp
C:\D2\Source\D2Common\QuestRecord\QuestRecord.cpp
C:\D2\Source\D2Common\RANDOM\Random.cpp
C:\D2\Source\D2Common\SKILLS\Skills.cpp
C:\D2\Source\D2Common\Stats\States.cpp
C:\D2\Source\D2Common\Stats\Stats.cpp
C:\D2\Source\D2Common\UNITS\Missile.cpp
C:\D2\Source\D2Common\UNITS\UnitFinds.cpp
C:\D2\Source\D2Common\UNITS\UnitRoom.cpp
C:\D2\Source\D2Common\UNITS\Units.cpp
C:\D2\Source\D2Common\UNITS\UnitUtil.cpp
C:\D2\Source\D2Common\Text\Text.cpp
C:\D2\Source\D2Common\Chat\Chat.cpp
C:\D2\Source\D2Common\Waypoint\Waypoint.cpp
C:\D2\Source\D2Common\Guilds\Guilds.cpp
C:\D2\Source\D2Common\SaveLoad\saveload.cpp
C:\D2\Source\D2Hell\SRC\Archive.cpp
C:\D2\Source\D2DDraw\Src\ddBink.cpp
C:\D2\Source\D2DDraw\Src\ddCore.cpp
C:\D2\Source\D2DDraw\Src\ddDebugFont.cpp
C:\D2\Source\D2DDraw\Src\ddEngine.cpp
C:\D2\Source\D2DDraw\Src\ddSmack.cpp
C:\D2\Source\D2DDraw\Src\ddSprite.cpp
C:\D2\Source\D2Direct3D\Src\d3dBink.cpp
C:\D2\Source\D2Direct3D\Src\d3dBlocks.cpp
C:\D2\Source\D2Direct3D\Src\d3dCore.cpp
C:\D2\Source\D2Direct3D\Src\d3dDebugFont.cpp
C:\D2\Source\D2Direct3D\Src\d3dEngine.cpp
C:\D2\Source\D2Direct3D\Src\d3dFloorCache.cpp
C:\D2\Source\D2Direct3D\Src\d3dPerspective.cpp
C:\D2\Source\D2Direct3D\Src\d3dSmack.cpp
C:\D2\Source\D2Direct3D\Src\d3dSprite.cpp
C:\D2\Source\D2Direct3D\Src\d3dSubtileCache.cpp
C:\D2\Source\D2Direct3D\Src\d3dTextureCache.cpp
C:\D2\Source\D2Direct3D\Src\d3dWall.cpp
C:\D2\Source\D2Gdi\Src\gdiCore.cpp
C:\D2\Source\D2Gdi\Src\gdiEngine.cpp
C:\D2\Source\D2Gdi\Src\gdiSmack.cpp
C:\D2\Source\D2Gdi\Src\gdiSprite.cpp
C:\D2\Source\D2Glide\Src\glBink.cpp
C:\D2\Source\D2Glide\Src\glBlocks.cpp
C:\D2\Source\D2Glide\Src\glCore.cpp
C:\D2\Source\D2Glide\Src\glDebugFont.cpp
C:\D2\Source\D2Glide\Src\glEngine.cpp
C:\D2\Source\D2Glide\Src\glFloorCache.cpp
C:\D2\Source\D2Glide\Src\glPerspective.cpp
C:\D2\Source\D2Glide\Src\glSmack.cpp
C:\D2\Source\D2Glide\Src\glSprite.cpp
C:\D2\Source\D2Glide\Src\glSubtileCache.cpp
C:\D2\Source\D2Glide\Src\glTextureCache.cpp
C:\D2\Source\D2Glide\Src\glVertex.cpp
C:\D2\Source\D2Glide\Src\glWall.cpp
C:\D2\Source\D2Lang\StrTable\strtable.cpp
C:\D2\Source\D2Hell\SRC\Archive.cpp
C:\D2\Source\D2Launch\Src\BNet.cpp
C:\D2\Source\D2Launch\Src\CharSel.cpp
C:\D2\Source\D2Launch\Src\MainMenus.cpp
C:\D2\Source\D2Launch\Src\SaveLoad.cpp
C:\D2\Source\D2MCPClient\Src\ToMCP.cpp
C:\D2\Source\D2Multi\Src\ChatDlg.cpp
C:\D2\Source\D2Multi\Src\ComCallback.cpp
C:\D2\Source\D2Multi\Src\Gate.cpp
C:\D2\Source\D2Net\SRC\Client.cpp
C:\D2\Source\D2Net\SRC\D2Net.cpp
C:\D2\Source\D2Net\SRC\Server.cpp
C:\D2\Source\D2Win\Src\D2Comp.cpp
C:\D2\Source\D2Win\Src\D2WinAccountList.cpp
C:\D2\Source\D2Win\D2WinAnimImage.cpp
C:\D2\Source\D2Win\Src\D2WinArchive.cpp
C:\D2\Source\D2Win\Src\D2WinButton.cpp
C:\D2\Source\D2Win\Src\D2WinEditBox.cpp
C:\D2\Source\D2Win\Src\D2WinFont.cpp
C:\D2\Source\D2Win\Src\D2WinImage.cpp
C:\D2\Source\D2Win\Src\D2WinList.cpp
C:\D2\Source\D2Win\Src\D2WinMain.cpp
C:\D2\Source\D2Win\Src\D2WinPalette.cpp
C:\D2\Source\D2Win\Src\D2WinPopup.cpp
C:\D2\Source\D2Win\Src\D2WinProgressBar.cpp
C:\D2\Source\D2Win\Src\D2WinScrollbar.cpp
C:\D2\Source\D2Win\Src\D2WinSmack.cpp
C:\D2\Source\D2Win\Src\D2WinTextBox.cpp
C:\D2\Source\D2Win\Src\D2WinTimer.cpp
C:\D2\Source\D2Win\Src\D2WRegister.cpp
C:\D2\Source\D2Hell\SRC\Archive.cpp

...

Name: >>20 2011-12-19 13:36

...
C:\D2\Source\D2Game\GAME\Arena.cpp
C:\D2\Source\D2Game\GAME\CCmd.cpp
C:\D2\Source\D2Game\GAME\Clients.cpp
C:\D2\Source\D2Game\GAME\Event.cpp
C:\D2\Source\D2Game\GAME\Game.cpp
C:\D2\Source\D2Game\GAME\Level.cpp
C:\D2\Source\D2Game\GAME\SCmd.cpp
C:\D2\Source\D2Game\GAME\Targets.cpp
C:\D2\Source\D2Game\GAME\Task.cpp
C:\D2\Source\D2Game\INVENTORY\InvMode.cpp
C:\D2\Source\D2Game\ITEMS\ItemMode.cpp
C:\D2\Source\D2Game\ITEMS\Items.cpp
C:\D2\Source\D2Game\MISSILES\Missiles.cpp
C:\D2\Source\D2Game\MISSILES\MissMode.cpp
C:\D2\Source\D2Game\MONSTER\Monster.cpp
C:\D2\Source\D2Game\MONSTER\MonsterAI.cpp
C:\D2\Source\D2Game\MONSTER\MonsterEval.cpp
C:\D2\Source\D2Game\MONSTER\MonsterMode.cpp
C:\D2\Source\D2Game\MONSTER\MonsterMsg.cpp
C:\D2\Source\D2Game\MONSTER\MonsterUnique.cpp
C:\D2\Source\D2Game\OBJECTS\Objects.cpp
C:\D2\Source\D2Game\OBJECTS\ObjMode.cpp
C:\D2\Source\D2Game\OBJECTS\objrgn.cpp
C:\D2\Source\D2Game\PLAYER\PartyScreen.cpp
C:\D2\Source\D2Game\PLAYER\Player.cpp
C:\D2\Source\D2Game\PLAYER\PlayerPets.cpp
C:\D2\Source\D2Game\PLAYER\PlrEval.cpp
C:\D2\Source\D2Game\Player\PlrIntro.cpp
C:\D2\Source\D2Game\PLAYER\PlrModes.cpp
C:\D2\Source\D2Game\PLAYER\PlrMsg.cpp
C:\D2\Source\D2Game\PLAYER\PlrSave.cpp
C:\D2\Source\D2Game\Player\PlrTrade.cpp
C:\D2\Source\D2Game\QUESTS\a1q1.cpp
C:\D2\Source\D2Game\QUESTS\a1q2.cpp
C:\D2\Source\D2Game\QUESTS\a1q3.cpp
C:\D2\Source\D2Game\QUESTS\a1q4.cpp
C:\D2\Source\D2Game\QUESTS\a1q5.cpp
C:\D2\Source\D2Game\QUESTS\a1q6.cpp
C:\D2\Source\D2Game\QUESTS\a2q0.cpp
C:\D2\Source\D2Game\QUESTS\a2q1.cpp
C:\D2\Source\D2Game\QUESTS\a2q4.cpp
C:\D2\Source\D2Game\QUESTS\a2q2.cpp
C:\D2\Source\D2Game\QUESTS\a2q3.cpp
C:\D2\Source\D2Game\QUESTS\a2q5.cpp
C:\D2\Source\D2Game\QUESTS\a2q6.cpp
C:\D2\Source\D2Game\QUESTS\a2q7.cpp
C:\D2\Source\D2Game\QUESTS\a2q8.cpp
C:\D2\Source\D2Game\QUESTS\a3q0.cpp
C:\D2\Source\D2Game\QUESTS\a3q1.cpp
C:\D2\Source\D2Game\QUESTS\a3q2.cpp
C:\D2\Source\D2Game\QUESTS\a3q3.cpp
C:\D2\Source\D2Game\QUESTS\a3q4.cpp
C:\D2\Source\D2Game\QUESTS\a3q5.cpp
C:\D2\Source\D2Game\QUESTS\a3q6.cpp
C:\D2\Source\D2Game\QUESTS\a3q7.cpp
C:\D2\Source\D2Game\QUESTS\a4q1.cpp
C:\D2\Source\D2Game\QUESTS\a4q2.cpp
C:\D2\Source\D2Game\QUESTS\a4q3.cpp
C:\D2\Source\D2Game\QUESTS\QuestsFX.cpp
C:\D2\Source\D2Game\UNIT\Friendly.cpp
C:\D2\Source\D2Game\UNIT\Party.cpp
C:\D2\Source\D2Game\UNIT\PlayerList.cpp
C:\D2\Source\D2Game\UNIT\SUnit.cpp
C:\D2\Source\D2Game\UNIT\SUnitDmg.cpp
C:\D2\Source\D2Game\UNIT\SUnitInactive.cpp
C:\D2\Source\D2Game\UNIT\SUnitMsg.cpp
C:\D2\Source\D2Game\UNIT\sunitproxy.cpp
C:\D2\Source\D2Game\DEBUG\Debug.cpp
C:\D2\Source\D2Game\Ai\AiGeneral.cpp
C:\D2\Source\D2Game\Ai\AiTatics.cpp
C:\D2\Source\D2Game\Ai\AiThink.cpp
C:\D2\Source\D2Game\Ai\AiUtil.cpp
C:\D2\Source\D2Game\Guilds\Guilds.cpp
C:\D2\Source\D2Game\SKILLS\SkillAma.cpp
C:\D2\Source\D2Game\SKILLS\SkillBar.cpp
C:\D2\Source\D2Game\SKILLS\SkillItem.cpp
C:\D2\Source\D2Game\SKILLS\SkillMonst.cpp
C:\D2\Source\D2Game\SKILLS\SkillNec.cpp
C:\D2\Source\D2Game\SKILLS\Skills.cpp
C:\D2\Source\D2Game\SKILLS\SkillSor.cpp
C:\D2\Source\D2Game\SKILLS\SkilPal.cpp
C:\D2\Source\D2Gfx\SRC\CmnSubtile.cpp
C:\D2\Source\D2Gfx\Src\D2gfx.cpp
C:\D2\Source\D2Gfx\SRC\Scale.cpp
C:\D2\Source\D2Gfx\SRC\Window.cpp
C:\D2\Source\D2Hell\SRC\Window.cpp
C:\D2\Source\D2Sound\Src\D2Sound.cpp
C:\D2\Source\D2Sound\Src\D2SoundFast.cpp
C:\D2\Source\D2Sound\Src\D2SoundSmp.cpp
C:\D2\Source\D2Sound\Src\D2SoundUtil.cpp
C:\D2\Source\D2Hell\SRC\Archive.cpp
C:\D2\Source\Fog\Src\D2QSQueue.cpp
C:\D2\Source\Fog\Src\D2QSSocket.cpp
C:\D2\Source\Fog\Src\BitManip\BitManip.cpp
C:\D2\Source\Fog\Src\BitManip\StringPack.cpp
C:\D2\Source\Fog\Src\String\FogString.cpp
C:\D2\Source\Fog\Src\QServer\QServer.cpp
C:\D2\Source\Fog\Src\QServer\QServer98.cpp
C:\D2\Source\Fog\Src\QServer\QServerNT.cpp
C:\D2\Source\Fog\Src\Mem\mem.cpp
C:\D2\Source\Fog\Src\AsyncData.cpp
C:\D2\Source\Fog\Src\DataArrays.cpp
C:\D2\Source\Fog\Src\ErrorManager.cpp
C:\D2\Source\Fog\Src\Safesock.cpp
C:\D2\3rdParty\STORM\SOURCE\SBig.cpp
Fault.cpp

Name: Anonymous 2011-12-19 13:38

LOL

Name: Anonymous 2011-12-19 17:22

So it's agreed. Diablo I was a good game because it was written in C.

Name: Anonymous 2011-12-19 17:40

>>26
I don't think it was concluded that Diablo I was written in C.

Name: Anonymous 2011-12-19 18:01

>>27
No. It wasnt.

$ strings diablo.exe | grep 'cpp' | sort | uniq
C:\Diablo\Direct\Mopaq.cpp
C:\Diablo\Direct\Snd.cpp
C:\Diablo\Direct\wave2.cpp
C:\Diablo\Direct\Winapp.cpp

Name: Anonymous 2011-12-19 18:02

>>20

You're right, Diablo II uses C++, I've just messed things up.

I've seen a number of these file names appear in assertion failures while hacking/modding Diablo II.

Name: Anonymous 2011-12-19 18:23

>>27
It had some cpp files but only but only because the evil blizz execs told them it had to be in cpp. They still wrote and compiled it as C. That's actually the reason Blizzard North left.

Name: Anonymous 2011-12-19 19:09

The skill and monster systems are now completely data-driven.
Skill balancing is simpler and quicker.
Monster control/populating/creation is simpler.
Although done for our needs, mod-makers should like these changes, too.
A major result is that nearly any skill can be used by any character class.

Name: Anonymous 2011-12-19 19:19

The Diablo II team comprised three main groups: programming, character art (everything that moves), and background art (everything that doesn't move), with roughly a dozen members each. Design was a largely open process, with members of all teams contributing. Blizzard Irvine helped out with network code and Battle.net support. The Blizzard film department (also in Irvine) contributed the cinematic sequences that bracket each of Diablo's acts, and collaborated on the story line.

Almost all of Diablo II's in-game and cinematic art was constructed and rendered in 3D Studio Max, while textures and 2D interface elements were created primarily with Photoshop. The programmers wrote in C and some C++, using Visual Studio and SourceSafe for version control.

Name: Anonymous 2011-12-19 20:39

>>1
¡¿Diablo??

U MENA CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK CLICK
????

Name: Anonymous 2011-12-19 20:42

>>31
Sounds like Diablo II and III suck and only the first one was a masterpiece.

Name: Anonymous 2011-12-19 20:51

>>33
It's not true. It required intricate teamwork and micro-management.

Name: Anonymous 2011-12-19 23:33

why does the .exe have the strings of all source files? Did they compile with -g?

Name: Anonymous 2011-12-20 0:10

>>28
do yourself a favor and 'su -'

Name: Anonymous 2011-12-20 2:18

SourceSafe

Name: Anonymous 2011-12-20 7:12

If you like it so much use a disassembler and reconstruct the the game.
Its not that big, and you can check out all the hacks they used so that Diablo would run at full speed in the 90's.
Using Sepples for game engines is always done at the architecture-level(using the full "OOP abstraction power" of Sepples would make games unplayable), the real code is low-level C and possibly Asm. Newer games abuse more of Sepples, so they take gigabytes of ram and set the latest cards to frying temps. Back when ram was a limited resource, the key parts were precomputed, swapped, generated and transformed with clever hacks, unlike the Java-level code made for modern games.

Name: Anonymous 2011-12-20 10:47

>>39
the produkt will make you happy

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List