Comments (7)
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.
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.
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.
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.
@Lectem I hear ya - is that logic coded/pseudocoded anywhere? I'm having a hard time finding it.
from opend2.
@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.
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)
- Segmentation fault (core dumped) HOT 1
- After select character, i got error HOT 7
- After compile with Linux? HOT 4
- Unable to compile on Linux HOT 2
- Requirements for Development HOT 1
- Run on Elbrus HOT 6
- Library issues in Linux (possibly Windows) HOT 3
- Feature Request: Support GoG's Battle.net server?
- D2Menu Character Create Screen Offsets DynamicPanel off the screen
- MainMenu Changes and Lots of menu item disappear
- [Feature Request] Use ESC button to leave scenes.
- Character Input Box disappear HOT 1
- By not providing FindSDL2.cmake
- Open thread - discussion about project direction HOT 4
- Q:what is the current status of this project HOT 1
- a note on Russian charset
- building on linux HOT 8
- windows.h missing while building for linux..
- You can not include Windows.h if you want the project to build on Linux
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from opend2.