![]() |
#41 |
Prophet
Join Date: Apr 2007
Location: Seattle, WA
Posts: 5,996
Donated: $40
![]() |
Oh gods yes. The way it was done in 3.0 was WORSE than the initial and temporary hack of turning it into a giant case statement in V3.1. It just added a second language AND extra boilerplate. Parsing text files is so much cleaner all around. So is generating code with CPP where necessary.
|
![]() |
![]() |
![]() |
#42 |
Apprentice
Join Date: Dec 2013
Posts: 71
![]() |
I think the C language is a barrier for new developers to try working on their ideas for a new variant. It was for me back in 2013. Maybe Lua isn't a good language either for creative feature coding, but there are plenty of alternatives. For example, Python is gaining popularity and is replacing Lua in some game engines and IoT platforms. Python is also used for education and serious work.
If we want variants that offer something unique and different from what we've seen before, then that requires coding and changes to core functionality. Text files only extend or theme what's already in place. With text parsers maybe we can get new stories in D&D. With scripting, someone should be able to turn D&D into Pathfinder. |
![]() |
![]() |
![]() |
#43 |
Prophet
Join Date: Dec 2009
Posts: 9,024
![]() |
Speaking as someone who tried to rewrite Angband in Python, more or less: it is a ton of work. Especially if you want to do a clean rewrite, rather than just re-implement C code in a different language.
Ultimately, it turned out that I don't care that much about Angband that I was willing to see the project through. I still feel bad for the people here that contributed to the project, only to see it die on the vine... |
![]() |
![]() |
![]() |
#44 | |
Vanilla maintainer
Join Date: Apr 2007
Location: Canberra, Australia
Age: 55
Posts: 8,667
Donated: $60
![]() |
Quote:
A much easier route is to start by making small changes, getting more ambitious as you better understand the language and the codebase. If starting from current V, my ongoing efforts to move stuff from C code out to the text datafiles should help with that. Note that I'm not suggesting no change for the sake of no change. It's just that I've been doing Angband coding for 12 years or so now - starting from pretty minimal knowledge of C. Feel free to ignore me though - learning from one's own mistakes is usually more effective ![]()
__________________
One for the Dark Lord on his dark throne In the Land of Mordor where the Shadows lie. |
|
![]() |
![]() |
![]() |
#45 |
Prophet
Join Date: Apr 2007
Location: Seattle, WA
Posts: 5,996
Donated: $40
![]() |
I don't think Python would make it a whole lot easier, except for the new object code, which was horribly plagued by stray pointer issues. A lot of complexity in Angband is language-independent.
|
![]() |
![]() |
![]() |
#46 | |
Apprentice
Join Date: Dec 2013
Posts: 71
![]() |
Quote:
And I agree that C can be learned. Troubles with C for me are mostly pointers, pointer to data type conversions and 32-bit / 64-bit compatible code. In other languages I never had to think about these situations. It is difficult and I have to figure out a lot of stuff myself. This work requires dedicated developers and plenty of developers who would code games won't endure that much. I know plenty of developers who are not this ambitious. That's something you know best and I can only guess at. Most of the complexity is from Angband itself, but how much complexity is from pointers and limited data types? |
|
![]() |
![]() |
![]() |
#47 |
Apprentice
Join Date: Dec 2013
Posts: 71
![]() |
So in summary, T-Engine is a Lua API for rogue-like modules.
Angband is moving to rogue-like modules by text file configuration. Configuration over scripting. |
![]() |
![]() |
![]() |
#48 | ||
Veteran
Join Date: Apr 2007
Posts: 1,947
Donated: $40
![]() |
Quote:
Quote:
Obviously if you were writing a new game, you wouldn't start from here: you'd make different design decisions, you'd have less 'flavour' to retain, and yes, you'd choose a different language. I'd probably write it in Rust if I was going to start from scratch now.
__________________
takkaria whispers something about options. -more- |
||
![]() |
![]() |
![]() |
#49 |
Apprentice
Join Date: Dec 2013
Posts: 71
![]() |
Okay then, maybe this will make coding in C a little easier. Forget embedded languages and scripting languages. How about Cello from libcello.org?
It's native C. Usage is drop-in and optional. No embedding or rewriting anything. No additional language. It enables higher level programming in C with dynamic types, eliminates direct usage of pointers, functions accept and return dynamic types and it offers easy object list manipulation. In other words, it allows me to treat C like Python without Python, or like javascript with underscorejs. Cello is non-standard and would have to be compiled alongside the code. Unless it's included in the codebase and make file, compiling would be more difficult because of this library. |
![]() |
![]() |
![]() |
#50 |
Prophet
Join Date: Apr 2007
Location: Seattle, WA
Posts: 5,996
Donated: $40
![]() |
Yes. Configuration wherever possible.
There are two places where C really gets in the way: the Object code as I mentioned before, and the event listening code, which is really quite ugly. |
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Angband 3.5-dev | Magnate | Vanilla | 70 | July 2, 2012 17:47 |
Escape key bug in Angband dev version 21 Dec 2011 revision 700d8c8 | Shockbolt | Development | 2 | January 7, 2012 11:12 |
Looks like a new Angband Dev Blog is up. (17.8.2011) | CJNyfalt | Vanilla | 23 | August 20, 2011 17:46 |
angband-dev@oook.cz down? | d_m | Development | 2 | August 4, 2010 17:47 |
New to Angband Dev | shinobibear | Development | 10 | June 10, 2010 19:11 |