Git Product home page Git Product logo

Comments (7)

eezstreet avatar eezstreet commented on June 1, 2024 1

I was just wondering if you got anywhere with the actual logic associated with all these columns (theres a zillion columns, what do they do? thats a lot of logic to write), as that's something I can't find anybody doing. DT/DS rendering, done, many times. Anyway I'll be doing this in C# hopefully so if I do you'll have something easy to follow to do in C++

The Phrozen Keep file guide has detailed listings of what each column in the TXT files do, but this is not a 1:1 mapping of what the stuff in the BIN files do. For example, Misc.txt, Weapons.txt and Armor.txt are all merged into one BIN file (Items.bin if I remember right). There are also columns that are not ever loaded and the string references are converted into ID references.

The BIN loader can be found pretty easily in D2Common.dll as there is a log print that occurs right at the beginning of the loading process. If you have some experience with IDA, you can check the Strings section of the library and cross-reference it against where it is used in the file.

I do not see the point of reinventing the wheel again, if I am being honest. There is already essial/OpenDiablo which is a C# Diablo 2 engine, and of course, this project. It would probably be a better effort to choose one project and improve/expand upon it.

from opend2.

eezstreet avatar eezstreet commented on June 1, 2024

Well for starters, parsing the TXT files (they are tab-delimited plaintext, not quite csv) is the wrong approach, since the game compiles the TXT files into BIN files. Instead the proper approach is to load the BIN files. I have the format of several of these BIN files and I'm aware of how the level generation works, so this isn't really the issue at the moment. Consider this solved. The compilation from TXT to BIN is not important since the game comes with precompiled BIN files and you can just load those. (In the future the engine will support using the -txt switch, which allows for compiling; this was supported by the original game and used for several mods. -direct is also a common one, which loads files outside of the MPQ.)

Instead I am working on a DS1/DT1 tile renderer since that's the logical next step here. I am low on time though since I am a university student but also a professional game dev. If people are willing to contribute, I can give pointers on how it should work. :)

from opend2.

aerykk avatar aerykk commented on June 1, 2024

Okay I wasn't clear, the point isn't how it's formatted, TXT, BIN, CSV as those are solved problems (technically CSV can be tab-delimited, check your excel/google sheet import options).

I was just wondering if you got anywhere with the actual logic associated with all these columns (theres a zillion columns, what do they do? thats a lot of logic to write), as that's something I can't find anybody doing. DT/DS rendering, done, many times. Anyway I'll be doing this in C# hopefully so if I do you'll have something easy to follow to do in C++

from opend2.

Lectem avatar Lectem commented on June 1, 2024

We already have reversed most of the game logic (at least I did and and some other members of the phrozen keep too).
The main issue here is sadly not knowledge but time :/

from opend2.

aerykk avatar aerykk commented on June 1, 2024

@Lectem I hear ya - is that logic coded/pseudocoded anywhere? I'm having a hard time finding it.

from opend2.

Lectem avatar Lectem commented on June 1, 2024

@Lectem I hear ya - is that logic coded/pseudocoded anywhere? I'm having a hard time finding it.

There are probably things on the phrozen keep forum, we do not always make things public because it's a lot of work, but if you need specific info you could always ask on the forum or discord server

from opend2.

aerykk avatar aerykk commented on June 1, 2024

I didn't know about OpenDiablo, that's kind of what I was looking for. It also looks like a shell though, as in it's mostly setup work. But this is what I meant, if there was code like this https://github.com/essial/OpenDiablo2/blob/master/OpenDiablo2.Common/Models/Mobs/MobState.cs#L119 (first glance this may also not be accurate).

I was looking at the PK stuff but english explanations of the columns is a farcry from actual code, and also images are missing in a lot of articles unfortunately. Thanks for the explanation about the BIN files, though!

I'll consider contributing to OpenDiablo and utilize it anyway though. FWIW I am already contributing to an existing project, just not one of the above. Gameplay wise, it's far ahead of anything I've found. https://github.com/mofr/Diablerie

from opend2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.