I'm performing a ton of refactoring on Dean Anderson's Cthangband variant. The refactoring will make the game easily extensible. I need some people to help test the updates.
A modernized HTTP and fully-customizable version of the Angband roguelike game. The OS stands for Operating System. Games can be designed with simple configuration files that can be downloaded an...
As for the "extensible" ... there is a lot I can talk about ... but let me hold off on that for now.
At this point, there will be no functional changes from Deans version. This is to ensure, the major refactor doesn't affect game play.
In the near future, I'll compile your fork on Linux. I'll see how this goes. (This is knowing Dean never formally test even his original game on Linux.) Also, what will you name your fork? If you're interested in fork ideas, I have a plenty of them. Though, I am biased because most of my current roguelike experience is exclusively Frogcomposband and Sil-Q. Even then, I play my games with specific Hugoband rules, which are my own self-imposed rules. Albeit, I based my gameplay on certain realsm aspects, thus they can make the game way more difficult. e.g. 1) Any drowning is a permanent drown. 2) Destruction destroys all stairs within radius. 3) Player Blindness means complete screen blackout, including the HUD. To this day, no one will ever implement those for obvious "too difficult gameplay" reasons. But those are my immersion realism expectations. I did fork from FrogComposband a while ago but done absolutely no work on it because I actually have no C coding experience at all. That may be very surprising because I have vast Linux experience in Gentoo, EndeavourOS, Fedora, and LinuxMint. Knowing your fork is new and going to be huge, I'd thought I share my ideas. Feel free to accept/reject any or all of those 3 ideas. My two cents. I'll try to learn coding at some point. I think Dean uses C++ for his fork (I'll check again later.)
I'm a very frequent regular at the angband.live webserver. You'll see me there. When you expound your fork, you'll get plenty of feedback there from other users. Maybe more beta testers.
Last edited by HugoVirtuoso; August 2, 2022, 01:09.
All the aforementioned being said, I cannot find the usual configure file and thus I cannot compile the fork on Linux. I'm using EndeavourOS currently, which is Arch based.
I know Dean compiled his original version exclusively on Windows. Any suggestions for the Linux environment?
I do not believe there is any support for C#.NET on Linux. At this time, Cthangband is limited to Windows. I know Dean has looked into being able to re-port it back to Linux/Mac ... but we are not there yet.
That's the point for this fork. Dean has done a monster amount of work, converting the game from C++ to C#. He has also made huge strides in converting chunks into objects. Huzzah to Dean for that effort.
My goal is to "modernize" the code. This modernization should give us three things:
1. Extensibility
2. Testability
3. Injectability
1. create a new C# class library project,
2. add a reference to the Cthangband libraries (a product of my refactoring),
3. writing some functionality (see below),
4. compile the .DLL,
5. copy the .DLL into a subfolder "extensions/add-ons" of the game
6. run the game
7. see my extensions in action
The various functionality that should be easily extensible should be:
a. add new item
b. add new monster
c. add new store
d. add new vault
e. add new action
f. add new command
g. implement different logic for various hooks
For injectability ... I want to be able to do something like the following:
1. Create a new c# project
2. Add reference to the Cthangband libraries
3. Add a hook to the dungeon/level generator to create a "special" level
4. Create an object that specifies a vault that is injected into the level
5. Create an object that specifies the type of monsters that I want in the level (in my case ... I only want 5 Ancient gold dragons)
6. Specifically place a special item at the end of the vault
If I can inject different objects of functionality, things like this will be easy.
Another idea for extensibility has to do with the monster AI.
I want to be able to modify monsters with coding. Specifically, how they move. I want the game to provide a hook that modules can implement that allows the developer to "code" logic into how they move. The game can provide (and more specifically limit) various details that the module has access to ... based on the stats for the specific monster.
For example, vision ... how far can the monster see. The game will only provide access to the floor space that the monster can see. The programmer cannot override that vision but still has to make a decision for how the monster will move. Are there walls in the way? Can the monster see the player? Does the monster attack other monsters?
All of that will start to allow developers to code AI into monster movement, on a per monster basis.
Hey ... maybe we have monster competitions? Who's monster can kill the other monster first?
Comment