Ruin0x11 / OpenNefia

(Archived) Moddable engine reimplementation of the Japanese roguelike Elona.
MIT License
116 stars 18 forks source link

Code contributing #363

Closed txe closed 2 years ago

txe commented 2 years ago

Hi @Ruin0x11 Is there any particular way to help with your project? I worked before with open source projects, e.g. I helped to port cherrytree from python to C++ last year. So far, I read the wiki part (it's really nicely written) and did some tinkering. I'd love to do something but it is unclear from where to take the original code (from elonafoobar or decompiled elona sources)?

Ruin0x11 commented 2 years ago

Hello. First of all, thank you for offering to help out.

OpenNefia's code is primarily sourced from the public domain source code of Elona 1.22 released by Noa in 2010. If you send him an email, I believe he will be happy to send you a copy. Elona_foobar was another project that took the approach of directly transpiling that source code to C++ (it was later archived in favor of OpenNefia). In contrast, I decided to port the code by hand with the hopes of ending up with an architecture better suited for modding.

Right now I'm still trying to figure out what combination of extensibility and stability would work best for this kind of project. That includes how to involve other people, which isn't one of my strongest points. One of the issues that I have found in the past few years is that, due to the fact that I've mostly been working on OpenNefia alone for a significant period of time, when someone else wants to help contribute to the project it becomes difficult for me to put into words exactly how they might be able to contribute. I would very much like OpenNefia to be a project that people can help out with, but at the same time I don't want to give well-meaning people like yourself things to do when all that work will ultimately be in vain if I happen to change my mind later.

Also, unrelated to that specific problem, as I've continued developing OpenNefia I've run into some issues related to stability that have only cropped up now that the project has become significantly larger than I once imagined it would be. Those issues stem primarily from the choice of language, which wasn't something I put much thought into in the beginning. (OpenNefia is essentially a weekend project that overstayed its weekend.) This is an issue whose resolution I'm deciding entirely on my own foresight - since nobody uses OpenNefia yet, there are no deep attachments to the architecture or worrying technical debt that needs to be worked around. But when I try to play the game normally and run into game-breaking issues within an hour, some involving save data, I find it difficult to see how other people will be able to legitimately use this as a new version of Elona in the coming years, and I start to believe that a different approach is needed. OpenNefia hasn't actually seen an official release yet, partially stemming from these issues. I don't know when I'd feel comfortable releasing it, seeing as it will need to reach stability at some point, and at the moment I don't quite understand what the roadmap for that will be.

But all that doesn't mean I will stop working on the project for good - far from it, actually. I'm only trying to figure out what would work best if OpenNefia is going to be taken seriously by people that just want to play Elona, not put up with the programmer-centric things that are most tantalizing to my psyche. To that end, I'm trying to see if OpenNefia's API would be better off implemented in a language like C#, for the sake of future-proofing all the hard work people will want to put in. (The repository for that effort is currently here). Additionally, this effort would allow me to try a different strategy that favors releasing the engine early and often, even if it's vastly incomplete, in contrast to working on the code entirely by myself for years and releasing it all at once, hoping that things work out.

Apologies for the tangent. In response to your specific question, even if there isn't anything I can think of that would need more programming help, one thing that you can always do is attempt to write mods and see what breaks/needs design work. What I don't have a good idea of is what exactly people want to do with OpenNefia, besides use it as a modern update of Elona. If I had a better idea of that, then I would be able to design the engine around those issues and support more use cases. Unfortunately, since my time is fairly divided right now, I'm mostly trying to see how much I can improve OpenNefia by working on its C# implementation, so this repository in specific with the Lua API probably won't see many updates in the near future.

But thanks for your interest, and I hope I don't come off as uninterested in your help. I do hope to have OpenNefia in some kind of state in the future where contributing is way easier than it is right now, whether it be in Lua or C#. To me, OpenNefia is mostly a huge programming puzzle that I enjoy tinkering with. I work on it out of my own interest, and as of late I've decided that I need to balance that with the need to include other people who are interested in helping. So thank you for reaching out.

txe commented 2 years ago

Hi, For a weekend project, it is a hell of a lot of work. I can be only envious of your tenacity. To be honest, I am more interested in how the game works inside instead of the game itself. Just being practical, I wanted to make something for the project as well while learning a couple of things from it. But I totally understand your points, so have no hard feelings. I wish you all the best.