Releasing the source code of the IE games
Alonso
Member Posts: 806
As a completely new modder I am starting to understand how difficult it is to mod the Infinity Engine. In a recent discussion I suggested that it might be a good idea for Beamdog to release the source code of the Infinity Engine. There were several views on the idea, but my perception was that overall it would be quite beneficial for everybody: The company, the players and the modders. I found this post by @ALIEN very insightful (edited for clarity):
I create this thread to discuss the idea further, and maybe propose it to Beamdog if it gets support from the community.
Edit: I imagine some people might not understand some of the concepts in this post, like GPL or code distribution. If so, just go ahead and ask, I'll try my best to give a detailed explanation of anything you need to know.
Beamdog could use the same approach Id Software and John Carmack used for game series like Doom, Quake and Enemy Territory (before ZeniMax bought the studio): Releasing the source code as GPL, without changing the legal state of the game assets. That way anyone can distribute the game code but they can't distribute game files. Also because of the GPL, other companies wouldn't be allowed to release modifications without including the source code. This approach has allowed other gaming communities to expand the capabilities of their game engines, which has actually boosted the sales of the original games because the legal approach protects them against piracy.
By making the EE editions Beamdog gave the BG series a second life. Releasing the source code would make these games immortal.
I create this thread to discuss the idea further, and maybe propose it to Beamdog if it gets support from the community.
Edit: I imagine some people might not understand some of the concepts in this post, like GPL or code distribution. If so, just go ahead and ask, I'll try my best to give a detailed explanation of anything you need to know.
Post edited by Alonso on
1
Comments
That being said, there are many projects that could stand in for having access to the source code. GemRB, while unrefined and kinda abandoned, would be a worthwhile project for those chomping at the bit of messing with the sourcecode. I'm not much of a Ruby guy myself (HAIL PYTHON), but we have an open source engine emulator, why not start with that instead of some pipe dream?
I also think that the one thing truly holding back IE modding (e.g. why there are so few custom campaigns) is the lack of a good area editor. I realize that the original games had hand drawn area art, so area art generated otherwise will look a little crunchy, but something is better than nothing right? Load it full of free assets plus textures extracted from the games and cleaned up, and I'm sure people could come up with some interesting stuff. I know there is that very rudimentary tileset-ish editor, but that's far from usable for any kind of sizable project.
Finally, while WeiDU is fun, perhaps a tool written in a slightly more... modern (?) ... readable (?) ... language would be a worthwhile investment? I started playing around with writing my own Python-based version of WeiDU (PyDU on my Github).
tl;dr Source code is likely unattainable, but there are many ways (some already well underway) that we could expand modding capabilities for the games in their current state.
GemRB seems to be abandoned indeed, so it might be a dead end. While I fully appreciate the merit of WeiDU, I feel frustrated by its very chaotic and bizarre nature, an organized and systematic modding language would be great. What's the current state of PyDU?
PyDU isn't "ready" by any means, but it is able to handle simple bitcode editing of existing files. The code below, for example, creates a copy of Accalia (named Accalia2.cre) with a metal colour of 155 rather than 30.
The next thing I was working on for it before GRE prep and grad school applications consumed my life was having it innately know what the various offsets meant. Instead of saying "change byte 0x273 to 7", you could just say "creature.class = 'Fighter/Mage'", and PyDU would handle the rest. Overarching goal was something that did everything WeiDU did, but with an emphasis on readability and more modern syntax.
It's already possible to do something along those lines in WeiDU, if one makes a lot of constants naming various values and offsets. It's not quite as high-level as what you were working on, but it makes the code a bit easier to read and write:
Bitcode editing is mostly just a proof of concept that I could get Python to play nice with the game files. I do think that where a new modding language would really shine is in the general syntax/structure (loops, conditionals, etc) and readability.
Like, this is what it takes to get a kitcode ID in WeiDu
Whereas in Python, it could be as simple as the following.
Aquadrizzt good luck with you project!
@Aquadrizzt: That looks very promising. Do you have a thread or web page for PyDU?
By using NearInfinity, maybe? That's written in Java.