The Month of the NPC - Roadplan in OP, creature-rewrite branch in repo

I’ll work on getting this on a main-repo branch so contributors only have to point at the one. I think swwu already has repo access there - anyone else who is interested, let me know so I can give you access.

And done.

https://github.com/CleverRaven/Cataclysm-DDA/tree/creature-rework

Note that I’m still not back home, so my fiddling around with it has been limited. But I like what I see so far.

GlyphGryph, I don’t actually have push access yet, if that’s what you meant by repo access.

NPCs are coming back? Awesome. Are the factions going to work this time? Two way radio might have a use!

Ought to throw in some Walking Dead references. A walled off prison filled with survivors, things like that.

swwu, you should have access now. I am now home, and will be spending tonight helping. If you’re online and interested, we should probably coordinate.

Sounds good, I will be on IRC for another hour or two at least, and probably all day tomorrow.

FWIW I am just moving the remaining combat-debuff diseases over to the new effects system today and sorting out whatever minor bugs I find.

I’ll be on in about half an hour.

@Swwu: Hi. I am sorry I did not reply to your post earlier on, but I got distracted by RL for a few days there. Sure, it would be much better if we both worked on the same branch rather than try to merge our efforts later on. I’ll discard my changes and look at what you guys have done, and work from there.

@GlyphGryph: When I played with the code I came across a few architectural problems that I would like to address. These changes do not add anything to game play or solve any bugs, but they make the code a bit messy. Should I try doing something about them (which will touch many files, and potentially introduce bugs) or are these the domain of the “core” development team? Examples of this include circular dependencies, unnecessary parameters being passed to functions (e.g. game object being passed into many functions that don’t need it), and certain functionality being handled inconsistently in code (e.g. different parts of code use player::IsNPC() and a comparison to ‘u’ global for the purpose of deciding whether the actor is the player or an NPC)

Architectural fixes are definitely appreciated moving forward here, but note that architectural fixes in the NPC class won’t do much since we are replacing it. Instead, help us work on the new architecture on the creature-rewrite branch.

The issues I am talking about aren’t restricted to the creature classes (So this might not be the place to discuss them really) so I imagine these going into mainline.
For example, the game class seems to be a lot of things at once. It is:
A- The driver: it initializes, loads, saves and quits the game.
B- Game World: It keeps track of where zombies and players are, light, fungus …etc
C- Player and monster actions: throwing, firing, using computers …etc are for some reason game methods that some times take a player object as input.
D- UI: display messages, draw explosions and bullets …etc, handle mouse.

This means that a class which needs any subset of this functionality, has to be exposed to the whole thing. and since game is the super class that knows about all other classes, we end up with lots of unnecessary loops.

This is just one example of the kind of thing I would like to address. Maybe I should start a new thread so as not to pollute the current thread?

Heruedhel: a lot of the player/monster actions you mention in item C will probably get redone in the npc rewrite we’re doing. It may be easier if you did those rewrites on the creature-rework branch just because I imagine the merge between two extensive architectural changes would be a pain.

Also, no need to discard your changes. You can just git rebase it to the rework branch.

Glyphgryph: thoughts on adding a “rework roadmap” google doc to this thread? Just a list of all the things that still need to be fixed, might make it easier for new people to jump in.

I’d like to help.

Also, I want to push forth the suggestion of making NPCs as modular as the enemies currently are. Meaning that if someone wanted to make a total conversion mod and have NPCs/humanoids that use their own inventory and are inherently agressive, it’s possible.

Uh…wink wink

If you write it, I’ll link it.

Okay, here is a task outline/roadmap, should be publicly editable: https://docs.google.com/document/d/1pWQ1FG5GAO7lZ9uo2FSxQ9MRzISwKXloA2LVQ6Af2A4/edit

If you want to help with a specific task, just stick your name next to it and go for it. Make sure all PRs you make are against the creature-rework branch and not master. If you’re not sure what a specific task means or how to start it, feel free to ask either here (in this thread or via PM) or on IRC.

Glyphgryph: I’m less familiar with the totality of stuff that needs to be done at the Player/Nonplayer/Character levels so those parts are a little bit sparse, you may need to list (and claim) some of them yourself.

That document might make more sense to be on the wiki so that everyone can access and edit it easily.

It should be publicly editable? I can stick it on the wiki if that’s easier for people though.

Wow, I necro’ed this thread with low expectations, check back a week later, and there is a ton of activity!

I’m going to mostly sit by cheering while you guys sort out classes, since that is not my forte (yet). The google doc is a big help. I’ll look back for ways to contribute on those goals. Just wanted to say that the CataDDA community is awesome.

whatever happened to all of this, haven’t really seen a update anywhere in awile, not even that dev log

Probably the guy doing it ran out of time. Good for you to keep the topic floating.

Ya he had run out of time from the kickstarter, but he also said they were still working on all the tiers we met on it regardless, obviously hes probably working now and i know glyphgryph said he was going to be away for most of febuary but its been awile since the dev blog the backers had access to had been updated with any news, so really thats all i was looking for :stuck_out_tongue:
Gotta say though the experimental build is crazy, gets updated so often with such sweet things, it fuels my CDDA addiction :stuck_out_tongue: