TeamPorcupine / ProjectPorcupine

Project Porcupine: A Base-Building Game...in Space!
GNU General Public License v3.0
483 stars 279 forks source link

[Overhaul] Future of Project Porcupine #1789

Open BraedonWooding opened 7 years ago

BraedonWooding commented 7 years ago

Project Porcupine needs a system wise facelift to be relevant. Feature wise we need more to separate us from other games and I think the key is in factions and allowing you to fly spaceships around and manage trade between a few large bases. But to tackle any facelift we need to isolate the problems of the project and move to change them. So below is a mostly comprehensive (tell me if I missed anything) of ANY thing that needs work, I have given a personal judgement on what should happen, once we decide then we can work on fixing the small things, then having a more focused game to allow developers to jump in and easily make changes and have fun! I'll do some of the bigger points first then just a list.

How do we do this?

Everything on this list needs work (+ others I'm sure). But documentation is key, so it's about documenting how they currently work and suggested changes then as a community we can discuss changes then make changes; proper gamedev style.

UI

Job System

Components

List of others

If there are any more comment below!

Note: I'm not including the SettingsMenu, DevConsole and PerformanceHUD on this since they are all new features (along with asteroid generator, game time, sound...) and will receive small changes but seem to be done right. They are isolated so updating is easy!

koosemose commented 7 years ago

Just a few comments on various things.

Be sure to look into what the current ModDialog system can do that yours can't currently, there are some good features in there (Though of course part of this is that in it's current form yours is meant for making individual components, so doesn't need some of the features, such as being able to do custom things on clicking Ok, or Cancel, for example).

I will say I'd like to be able to see your UI system being able to implement a dialog fully in Lua before trashing the ModDialog system.

Components, as I've discussed in Discord does need some work, one thing that occurred to me today, that would help tremendously would be a cleaner way to access a given component, possibly with some form of built-in caching so it doesn't have to cycle through all components every time it needs to find one.

I'd rather not completely remove features without a replacement in place.

As far as Traders, basically what we have now is a trading system, with just enough of a traders to make it accessible.

I personally don't like the quest system at all (it just doesn't feel right), but I do think it could be tweaked to be more suitable. In it's current form it feels very meta... it's a system that exists outside of the gameworld, I would prefer to retool it into more of a requests system (i.e. company X desires product Y, accept this limited time deal and you have Z time to complete for reward). A lot of that retooling is just a matter of descriptive text used but I'd prefer the system to have some in world method for the products to be sent/rewards received, rather than the current method of you get X amount and suddenly have Y reward.

Pathfinding should always stay isolated. And currently it is, and it's important to remember there are two layers to it, the actual pathfinding algorithms, and the Pathfinder which uses the algorithms, that should allow changes to the underlying algorithms without affecting other things.

Isometric and 45 degree angle particularly can be negative for base building, as it makes things incredibly easy to obscure, without additional systems to see behind things (for example, the Sims, which really is just a base building game, has to have systems to completely hide walls, and rotate things for when things are behind another object (which, while not impossible, is difficult or at least requires lots of art assets in a sprite based game). And as far as 3d goes, while the system should be robust enough to be able to handle a switch to models mostly with just changes to the sprite controllers (obviously), I'm pretty sure it would would also be terrible for performance (and require some advanced coding/modelling to make it not bad for performance), since our current system is rather focused on having separate things (in the case of 3d, models) for each object, each tile, each wall, and so on.

As far as characters, at some point I want to have a discussion on the stats(the current ones used are ripped straight from D&D, I think because I used them in an example of what could be done with stats)... and possibly renamed (to attributes perhaps, to further rip D&D terminology), simply because there are other things that could be termed stats as well (a lot of things with equipment could be handled if lots of those things, such as damage resistance, oxygen supply, etc were stats on the character that equipment could modify when worn/removed rather than having to do some system of querying each piece of equipment). Then of course there's the traits system and skills...

Events seem fine with me... well depending what events you're talking about... rather the events fired by various things in game or the Event Actions fired for mods.

Currency is ultimately a part of the trading system.

BraedonWooding commented 7 years ago

About the UI, I completely agree and that is basically my goal currently to get that fixed.

I agree completely again with the components but that also kind of is around better API and so on, which is more 'like to have' rather than 'necessity' (though actually thinking about it caching is kind of really important).

Traders I still feel is lacking and has pretty big problems and doesn't really work, it is more on the point of going let's 'push aside everything that doesn't work completely'.

And yes I 'hate' the quest system too, personally I feel it should be a subset of a faction system and be an integral part of that, and maybe you have to go talk to the person to get the rewards just so we can add more story and world building.

Pathfinding i was more meaning on making sure no edits are done to the actual pathfinding data outside the pathfinder itself, but if that is already done then amazing!

Yeh it was more of a suggestion, it's just when you have 2D with layers it feels janky sometimes, and more of a view could help that, though I think yeh keep it as it is, till there is problems. 3D was just kind of a 'oh could work this way' and yeh as I said massive performance impact.

Characters I really like an absolute ton of attributes, but recently I saw a different way to do it, have a few core stats with minor stats of those. So essentially have something like 'Body Health' which would have core temperature, illness, damages to limbs and so on all wrapped up. So at a glance you only have a few key attributes (I would suggest including both mental and physical health - a lovecraftian mental sanity state could be interesting or some kind of morale system but at least a basic mental system is important, along with other things like clothing, passions... each covering a range of smaller attributes).

I'm kind of against having trait systems, but rather allow you to train individuals to gain skills, its less like experience and maybe engages? But yeh sure essentially same thing.

Event Actions seem a little off, like it's hard to say 'go trigger this event' in code, or to say 'if this event is happening'...

Currency just feels like oh you have a name for a resource! It just feels flat and kind of its json feels pointless, maybe even merge it into a faction thing with each faction having their own currency (or set of currencies) and you can do tasks to earn currency to spend it on unique gear/gifts. Basically it just feels like a you have to have a thing to trade rather than this is needed for this important thing. In a game so revolved around resources (quillcorp, you trying to expand and having limited resources) it feels like currency and resource management needs to be a core and integral part.

I think we agree on a lot and the rest is semantics so yah! If anyone else has any opinions lets gather intel :P

koosemose commented 7 years ago

Yeah, like I said, with Traders, it's really just at this moment a hook to hang the Trading system off of, which does work fairly well, for what it is (a fairly basic, but core system).

As far as traits, the kind of things I'm meaning by traits is little things which aren't generalized enough to have a general stat for (and may have a further effect on other stats) quirks if you will, to again go to the Rimworld reference, something like Pyromaniac, would be a trait. I've been rattling around in my head my idea for the full characters stats/traits/etc system, and will look into doing a full writeup on it in an issue... it's too big a system to really discuss usefully within this broader conversation.

There's also conversation in the past on the intentions for the currency system... to summarize, the idea is to have two opposing systems of currency, one that is general use and can be used on pretty much anything, and another limited high cost currency (you earn less for selling, pay more for buying), basically a scrip sort of currency, that only works with a single faction (standard assumption is QuillCorp.

And Event Actions you can trigger from code EventAction.Trigger("<EventActionName>") And you can respond to it only from modded code, it could benefit from at least the core Events being tied into the core Event system though.

And yeah, the only interaction with the core pathfinding outside code has is requesting a path, getting that path, and invalidating path data (actually just invalidating a specific node, so it doesn't need to fully rebuild the path finding data every time.

The pathfinding itself actually works quite well, the only real issues are more in how we are using it (and the helper methods available in the Pathfinder helper class).

BraedonWooding commented 7 years ago

Yes, also jobs kind of has a lot of issues with pathfinding (it uses it wrong in quite a few cases, though that was ages ago when I looked so it may be much better).

I do think of going to way of special currency could be HUGE! And it doesn't just need to be money, it could be souls or some weird egg thing (completely random but you hopefully get the idea) that require unique tools and setups that kind of separate playthroughs.

I do agree with the traits thing but maybe it should be based of the effects on the character's attributes? Like if you have < x speed then you gain the lazy trait which makes your work speed slower but means you need to sleep less or have more fun, the kind of balance that makes players want to tinker with stats to produce desirable traits? Again to broad of a conversation, but I think if we make it about the story and about the world building and faction relationships it will truly stand out. Imagine something like a squad of engineers died but one who barely survived but got severe mental trauma, but through that got some weird concoction of traits and attributes that made him a god at fighting or something odd, that makes things feel unique and fresh even hundreds of hours in.