SoulRider wrote:I know there is no magic answer to this question, but I thought I'd ask for pointers. I would like to know what sort of experience level is required to start producing playable games.
This question is indeed difficult to answer, especially at this time.
As you may have already read in thread
More about Component Systems, I'm currently working on finishing the component system for game entities, so that it gets into an initially usable state. ("Initially usable" means that it can do everything that the previous code could, is fully usable in the Map Editor and for scripting, and brings all the inherent benefits of a component system.)
So it makes the most sense to answer you question in the context of the upcoming release. When this is done, you can do quasi everything with Lua script, or at least start with Lua and make something playable with it. (I'm currently working on porting the human player code to the new component system, and I'm not entirely sure yet how much of it will be doable in script code alone, but I'm still positive that it's most if not all of it.)
In this regard, programming in C++ will only be required if you hit a limit of the scripting API, that is, you want to do something for which there is no component that can handle it. Examples for such cases include new renderers (e.g. DirectX-based
![Wink ;-)](./images/smilies/icon_wink.gif)
), entirely new physics systems, or other entirely new features.
As another example, we already have a "Model" component that can be used to render arbitrary models in 99% of all situations. Right now I'm exploring if this Model component is also the right tool for handling the player's 1st person weapon model, which may or may not require its own C++ implementation. Later, I would also like to introduce another new component that can handle plants and trees with a special level-of-detail implementation -- something that the Model component will not be able to do in the way I want it to be done, requiring a new component to be written in C++ code.
Something else: Implementing a 3rd person view was always a frequently requested feature for Cafu. Right now I have this running on my developer machine, it's trivially done in the component system, but more because I'm experimenting with camera setup rather than implementing this as a feature. When the component system is done, we will ship with traditional 1st person view as ever, and having a third person view will become a nice (I hope) tutorial that uses script code alone to achieve the desired effect.
On the other hand, features like embedding the images of surveillance cameras that are in other parts of a level into GUI panels will, at least initially when the component system for Cafu is first released, require custom C++ code.
That being said, I hope these examples provide you with some outline that helps answering your question.
While I learnt the very basics of C++ many years ago, I only have experience of coding in a customised version of lua used in Natural Selection 2.
Hm, I kept track of their progress a long time ago, but then lost focus when they pushed their release date over and over again...
Wow, this looks very impressive! I honestly didn't get if or how this could be actually run, but the screenshots look awesome!
From my limited understanding of your currently under development component system, it seems to work similar in concept to the idea of the mixin that is used in Natural Selection 2, and as I used in my own mod when creating the ModelScaleMixin.
In this case, what things would I need to implement in C++, and where would you recommend me starting on those points. I am a dive in and play kind of guy, although I like documentation when I am stuck.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Unfortunately, I don't know enough about NS2 to answer these questions...
Any advice you can give, is greatly appreciated, I look forward to improving my programming skills and knowledge with this engine. I see it as a long-term time investment
![Very Happy :D](./images/smilies/icon_biggrin.gif)
If C++ doesn't scare you, I'd recommend starting with the "entity-component-system" branch. Although it is not yet finished, I think that the new code is elegant and clear, and should at least give you an impression of what C++ programming in Cafu is like.
The entity component system files are in
Libs/GameSys
,
related example Lua scripts (that the Script component uses) are in
Games/DeathMatch/Scripts
,
the GUI component system files are in
Libs/GuiSys
.
You may want to have a look at the GUI Editor (that is a part of CaWE) to see how the already implemented GUI component system works (although it is much smaller than the upcoming entity component system).
The Map Editor (also a part of CaWE) will later get a proper Entity Hierarchy and Entity Inspector like the GUI Editor has for windows, but basic map editing and making will not change in this regard.
I hope that this information, little as it is, provides you with an initial overview. Feel free to ask if you have more questions, I'm happy to help!
![Thumb Up :up:](./images/smilies/thumbup.gif)