I’m in the process of developing quite a complex cover system for my TPS game. At the moment, I’m trying to make it as automated as possible (e.g. raycasting for full/half cover is done using automatically generated cover colliders for objects in the cover layer).
My real question is, would anybody find a cover system useful if I released it to the community via the Asset Store? I ask this because I want to know if it is worth me spending time making it more “generic” (i.e. so it can work for a variety of different scenarios).
I’d be interested to hear what you think about this, in case I waste a lot of time doing so when it’s unnecessary for my current project.
Sounds to me like something you would sell quite a lot of copies of, considering that most AAA FPS/TPS are using some implementation of cover systems now.
The fact that yours is automated is pretty cool.
Some of the most requested items on the asset store are scripts and plugins, so yes, I’d say there is probably an audience.
If it is tweakable/generic I think there will be some demand for it. It is a very tricky subject which a lot of people want but don’t want to put that much time into(due to it’s complexity).
Since a lot of people are working on FPS with unity, it should have a lot of clients, consider the fact that a lot of the FPS project are low budget so maybe think about 2 licenses or version of your system.
I’m not working on a FPS nor plan to, but if i where to , i would surely LOVE to find a good cover system on the asset store
I think your biggest hurdle would be the animations; they are a critical component of a cover system and I can’t think of a feasible way you’d be able to create a flexible system that would allow your customers to swap in their own art.
I think that I’ve managed to create this kind of flexibility in a few ways (that arise from the way I’ve structured the system as a whole). First of all, the CoverUser Monobehaviour class doesn’t include any functionality at all. Rather, it just calls methods and properties from “functionality provider” classes. This means that these can be extended/added to/rewritten by teams and easily dropped in to the main class.
Specifically to animations: The functionality provider classes (and by extension, therefore, the CoverUser class) expose events that correspond to actions within the cover system. Then, the animation handler component simply listens to these events and plays the animations specified by the user. The sound controller and input controller also responds to these events.
The real benefit of this system is that if you’re happy with scripting in C#, then you can very easily create your own animation controller(in very few lines of code), sound controller, score controller, AI controller etc…
Was this the kind of flexibility you had in mind, or is there anything else that you think might be done?
Personally, I think the entire reasoning is flawed, but that is just me…
My personal approach is to always make everything generic as far as possible so you can re-use your own code later without having to spend the time to re-generalize custom code during the second project for use in the third. I would say, make it generic and when it is done, ask the question: “Could anyone else use this also?”
Build it for yourself first and then decide if it is useful or not and if so, sell it. If you made it generic for your self then it is already in a state that is usable by others if they want it… That is my approach… If I were to make this same post, in the back of my mind I would be asking myself: “I wonder if anybody thinks what I am doing is worth a damn. I hope they say yes because then I can feel cool that I am doing something that others will look at and go “Coooool”. All right, let’s wait for the replies!”
…unless of course, this is a marketing strategy and you just want to get the word out of what is coming and don’t want to take the generic “Coming soon” approach. If this is the case, then congratulations, you even got ME to respond
That sounds great, but I wasn’t so much referring to flexibility in swapping in your own cover animations, I was more referring to the fact that those animations are required to exist in the first place (a cover system in which the character didn’t “take cover” would be pretty lame). For your system to be of an use, it basically requires that a potential customer be an animator or have access to one.
Well yeah, but there is no real way around this. Even if it came with animations they wouldn’t fit your rig. I think all this system needs is the cover mechanic and an example with a character, the user should be able to fill in the blanks from there.
I know there’s no way around it, that’s why I pointed it out I just think it severely limits his potential market (the point of the thread is whether or not it would be worthwhile to develop and release it on the asset store, after all). I can see it now, getting a dozen sales from newcomers to Unity, complaining furiously that they can’t figure out how to get it to work with the model they just bought from dexsoft because they don’t have the requisite animations.
Personally though, I think it sounds awesome and would probably buy it, just for the dynamic cover collider generation. I’m just playing devil’s advocate.
Well, for our game, we didn’t really have an animator always on hand, so I was put in a similar scenario. The cover system in it’s generalised form reflects this. Whilst there is the option to have custom animations handle everything in terms of movement/rotation of the player (and this is something I’d recommend in order to get the best feel), the default mode uses the system to rotate and move the user in cover with only very basic animations. I’m actually using a model from one of the original FPS Creator model packs to test the system with very basic animations and it looks and feels quite nice.
I guess I’m going to seriously consider releasing it now, thanks to your input, so I want to do the sensible thing and make it work with basic models (including primitives) for testing purposes, purchased models (as from Dexsoft and other content providers) but also models custom built for the system so that it can make full use of their animations. I’m also testing it with external systems such as the Locomotoon system and it also seems to be working well here.
I’m going to be honest, Ive never really built a ‘toolset’ beyond those specific to my company’s work so it’s a bit of a learning experience so I do appreciate your input!