Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Overhaul] Future of Project Porcupine #1789

Open
BraedonWooding opened this issue Mar 30, 2017 · 4 comments
Open

[Overhaul] Future of Project Porcupine #1789

BraedonWooding opened this issue Mar 30, 2017 · 4 comments

Comments

@BraedonWooding
Copy link
Collaborator

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

  • In most cases it's counter-intuitive and lacking. Mod dialogs are somewhat annoying to build and extend and it doesn't make a whole lot of sense and is quite static.
  • Suggestion: Begin removing the old UI systems and replace them with my UI system, it will have support for LUA very soon, using a custom LUA table to interact between them, obviously it won't be as powerful in LUA but for most cases around 90% of it can be done in the XML/JSON and even more with custom parameter support which was added recently! This means we can make it very similar to the android way but also allow more closer access ( @koosemose suggested more of an android approach ).
  • Pros: Very easy to use, allow extending the base UI element for a different array of uses, i.e. the PerformanceHUD allows you to use an update function where the settings menu uses apply and cancel functions. Custom parameters for easy API use of good base classes.
  • Cons: Not as easy to just insert into a system, requires an extensive use of layouts (which will make sure everything works pretty) but will often result in more time setting it up. Can't just 'create' a place on the screen has to assign it to somewhere, this means that a dialog will most likely just be a static window (and position) with its contents being dynamic with this system.

Job System

  • There is a lot, and I've discussed it before so New Job System(tm) #726 New Job System #1590 cover it better. Basically needs an overhaul, I'm thinking going utility route, i.e. ISearchable, IFindable, IStorage and so on.
  • Suggestion: From completely scratch, get it right second time kind of thing. MASSIVE undertaking however.

Components

  • While I have my concerns about it, I kind of also see its power and potential. Maybe a facelift from API and ease of use / documentation would reallllyyyyy help.

List of others

  • Traders, mostly incomplete
    • Suggestion: Deprecate for now, then later re-add with more focus on factions
  • Quests, broken? Lacking
    • Suggestion: Deprecate for now, then later re-add with more focus on impact on fuactions.
  • Temperature and Atmosphere, in a WIP PR
    • Suggestion: Don't add any new features that use this system and keep it deprecated till author has more time, or move it to someone else.
  • Pathfinding, issues here and there
    • Suggestion: Mostly good keep it in its current format, just isolated so it can be redone at one point.
  • Localization, actually quite good. Some old code
    • Suggestion: Actually quite like it, sometimes a bit awkward and probably needs threading and there was a PR previously that fixed a lot of issues so maybe look into that and finish it?
  • Utilities, getting there and quite powerful
    • Suggestion: No problems that I can see of, and quite popular for changes so maybe small changes but quite good.
  • Modding, weak and everywhere
    • Suggestion: A lot of code is everywhere for the modding, some of it supports it, some of it only supports one language (I'm at fault for this), and some supports really well. UI Dialogs are messy, and a lot of the code feels that way. Temperature and other key components should be moved to a mod, note they can still be native but they have to be toggleable (in case we need speed).
  • World, mostly 'future'
    • Suggestion: I personally love the 3D space we give and the ability to fight in 3D space using a 2D ship could be really cool and fun, along with allowing a great deal of help. Though I think taking an even more isometric point of view is necessary. I'm talking almost 45 degrees rather than our current ~15. Then rotating around, so basically it's like imagine a 3D view... but 2D? I mean we could even go 3D to be perfectly honest but frame rates and stuff would suffer.
  • World Gen is basically perfect right now, I quite like it
  • Characters need more stats and focus!
    • Suggestion: Ignore for now, but maybe even implement support but not direct interaction. Basically just keep everything functional and isolated so moving to a new format or adding stuff is easy.
  • Building, not context sensitive!
    • Suggestion: If I'm building a wall I want a line not an area. So have options? Seems good else wise.
  • Furniture, Not really a problem
    • Suggestion: Probably needs some changes at one point but currently good.
  • Events, not powerful enough
    • Suggestion: Too weak and safe, needs more power
  • Wallet, currency all that stuff is too weak and isn't used and probably needs changes
    • Suggestion: Really just feels 'there' needs a reason or deprecate till traders are back

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
Copy link
Collaborator

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
Copy link
Collaborator Author

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
Copy link
Collaborator

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
Copy link
Collaborator Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants