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

Pages: 1-4041-

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

Name: Anonymous 2011-12-20 12:12

>>40
the produkt is overrated

Name: Anonymous 2011-12-20 15:26

Which way is the right path, as I stand upon
this chaotic crossroad of hate…
How many ways are there to roam
on this dark and damned road of Fate…

“There are many ways, my son,
to find where the souls of Demons remain…
But it takes only one second of despair and of doubt
until at last, your soul, they will gain…
Inherit these lands, these things, these dreams
that are yours, forever, to adore…
For there is no life, in the depths of chaos, my son,
for you to explore…”

Name: Anonymous 2011-12-20 15:28

Dude, these system requirements are hardcore.

60MHz Processor and 8MB RAM? Where the fuck am I supposed to get these?

Name: Anonymous 2011-12-20 15:34

A Quick Note From The Designers

First of all, thank you very much for buying Diablo. We have
worked hard to create a game that you will want to spend many,
many hours playing. To further that end, we have added some
features in Diablo that may not be apparent at first glance.

Diablo is a VERY different play experience depending on which
character class you choose. The tactics and strategies employed
by the Warrior, for instance, would be sheer folly for a
Sorcerer to attempt. Many high level items and spells will only
be useable by certain classes. After you defeat Diablo, try
another game with a different character class.

You won't be disappointed.

Diablo also randomly generates every level of the labyrinth,
including the rooms, hallways, lights, shrines, fountains,
cauldrons, pools, special themed areas, treasures and monsters.
The list just goes on, but, what it boils down to is each time you
enter a new level within the labyrinth, you will have new things
to do and discover.

Finally, Diablo takes on an entirely different feel when you are in
a multiplayer game.  The interaction that occurs, the new
strategies and the difference in how you have to think all make for
a very exciting and very new experience.

Again, thank you for grabbing that Diablo box off of the shelf.
Always remember: If you think you've found everything -- you're
wrong...

                                             Blizzard Entertainment

Name: Anonymous 2011-12-20 15:47

First Diablo had much better palette selection, due to 256-colors. Artists post-processed everything manually. The second game had blatant 3d-render with some objects looking out of place, and they were colored using multitexture-like crap.

Name: Anonymous 2011-12-20 17:59

The first Diablo is much harder to mod, Diablo2 about a dozen of text file changes = new game.

Name: Anonymous 2011-12-20 18:09

>>46
easy = no fun

Name: Anonymous 2011-12-20 18:38

if they had programmed it in python or javascript there would have been no problems

Name: Anonymous 2011-12-20 19:04

>>48
0/10

Name: Anonymous 2011-12-20 20:31

>>45
255 colors as on is reserved for alpha blitting, faggot.

Name: Anonymous 2011-12-20 21:03

who cares its a simple tile engine
grow up

Name: Anonymous 2011-12-20 21:34

>>50
It's 256, idiot, cuz they used RLE.

Name: Anonymous 2011-12-21 1:32

>>51
you grow up

Name: Anonymous 2011-12-21 17:33

>>43
Where am I supposed to get an 8MB stick of RAM?

Name: Anonymous 2011-12-21 17:45

>>50
Colour key, not alpha.

Name: Anonymous 2011-12-22 21:30

>>54
FuncoLand

Name: Anonymous 2012-02-18 0:54

Diablo III

Name: Anonymous 2012-02-18 0:56

Like all great games, it was written in Lisp.

Name: Anonymous 2012-02-18 1:16

>>58
So what you're saying is that there are no great games unless you count fibs as a game?

Name: Anonymous 2012-02-18 2:38

>>59
The Tower of Hanoi is a great game. I'm not sure whether it still counts if the program solves it all by itself though.

Name: Anonymous 2012-02-18 3:05

>>60
Tower of Hanoi: the Visual Novel

Name: Anonymous 2013-08-19 1:27

>>48
I think you can rewrite it in JavaScript today and it will run at full speed.

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