General question about experience required.

Get technical support about the C++ source code and about Lua scripts for maps, entities, GUIs, the console, materials, etc. Also covered are the Cafu libraries and APIs, as well as compiling, linking, and the build system.
Post Reply
SoulRider
Posts: 95
Joined: 2014-04-06, 00:16

General question about experience required.

Post by SoulRider » 2014-04-08, 01:02

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.

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. The engine was built in C++ with all the game code written entirely in lua. The engine wasn't open source, but by default the lua code is. While they realise now there were more things they should have put in the engine, their methods gave me a great deal of freedom to develop an entire mod in lua.

Here is the latest version of my GorgeCraft mod which is close to final release version.

https://github.com/SoulRider/GorgeCraft/

Although this is just my custom code, and does not include the default NS2 code that is also used, it does give an idea of the depth of control available just from the lua code. To work with CaFu, will I need to do a lot of this work in C++, or can I do similar levels of work in lua?

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. :D

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 :D
User avatar
Carsten
Site Admin
Posts: 2160
Joined: 2004-08-19, 13:46
Location: Germany
Contact:

Re: General question about experience required.

Post by Carsten » 2014-04-08, 17:12

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 ;-) ), 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...
Here is the latest version of my GorgeCraft mod which is close to final release version.

https://github.com/SoulRider/GorgeCraft/
Wow, this looks very impressive! I honestly didn't get if or how this could be actually run, but the screenshots look awesome! :D
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. :D
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 :D
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! :up:
Best regards,
Carsten
SoulRider
Posts: 95
Joined: 2014-04-06, 00:16

Re: General question about experience required.

Post by SoulRider » 2014-04-08, 18:39

That's great for now. I will begin reading up and playing around. As I go through, any questions that pop-up, I'll send them your way.

I really appreciate your time and assistance Carsten and I'm looking forward to growing my Game dev career alongside the CaFu engine :D

The GorgeCraft code runs because it is a mod of NS2. The files I linked are the files I edit within the game. The remaining game uses un-edited base NS2 code and resources.

If you are interested in catching up with ns2, the lua code is available on GitHub - https://github.com/BerserkCore/NS2 and I also have the API file if you would like to see what they connect in the engine.

As I mentioned, they 'over-opened' the game, and put some things which could have been left in the engine into lua code, and they also had problems as they didn't introduce lua-jit until late in development. As a result a lot of their systems can't take advantage of the performance benefit it offers.
User avatar
Carsten
Site Admin
Posts: 2160
Joined: 2004-08-19, 13:46
Location: Germany
Contact:

Re: General question about experience required.

Post by Carsten » 2014-04-09, 15:53

SoulRider wrote:That's great for now. I will begin reading up and playing around. As I go through, any questions that pop-up, I'll send them your way.

I really appreciate your time and assistance Carsten and I'm looking forward to growing my Game dev career alongside the CaFu engine :D
:cheesy:
If you are interested in catching up with ns2, the lua code is available on GitHub - https://github.com/BerserkCore/NS2 and I also have the API file if you would like to see what they connect in the engine.
Ok, thanks for the info! I'm always happy to learn something new, but I'm not sure yet if I'll find the time to look at it. More importantly, the scripting API that Cafu will expose is (as another benefit of the component system) really quite clear already (in the sense of "what do we want and need? what is reasonable?") and also quite simple and lean (loosely speaking, it is targeted at map designers, allowing them access to all features that the engine has without adding new C++ code, in a simple-as-possible manner). With Cafu scripting, entities and their components play the main role, just as in the Map Editor. The only concern that I still have is that we also need a few more auxiliary classes like vectors, bounding-boxes, possibly also matrices and quaternions and so on. It's not really a problem though, just (possibly) quite a lot of work that I have not yet found the time to look into.
Best regards,
Carsten
Post Reply

Who is online

Users browsing this forum: No registered users and 4 guests