Home | Documentation | Atomic Chat | Github

Quick starting with Atomic Engine


Hi, all!

Sorry for noobish questions which follow, but I’m a bit clueless now…
I currently develop with Urho3D so this can be used as basis for answers.
Also I use Linux.

  1. Is there some tutorial on quick starting with C++ development for Atomic?
    I’m Linux user and currently use Urho3D, but I’d like to try Atomic with my project.

  2. How can I implement my own C++ components with Atomic and integrate them with Editor
    so I could use them from Editor?

  3. Is there any additional high-level features comparing to Urho3D engine-wise (except Editor and language bindings)?



Also - is it possible to use engine as library (like Urho3D) ?

  1. No official quick start for C++, but for a C++ program with no AS or Lua scripting, a program will be very similar to a Urho one, like the FeatureExamples, which is most of the Urho examples ported to Atomic in C++ and C#. There are some cmake solutions in threads in this forum :
    Building C++ examples in Ubuntu
    How to create a C++ project?

  2. Not sure, this thread sounds like what you may want : Improving Atomic C++ project support, but I have not tried it yet, more cmake.

  3. A lot of the differences are in the scripting languages, the core features are comparable.

  4. Use engine as a lib? yes, some of the cmake solutions will do this. https://github.com/AtomicGameEngine/AtomicGameEngine/wiki/CPP-project-using-engine-as-a-library
    The other option is using the Commando C++ Plugin (Linux) which is what I use to get C++ stuff done on linux, until there is an official C++ solution.


engine as a lib


Well, this looks like submodule approach, I was more into Urho’s
URHO3D_HOME cmake variable.


Urho3D’s approach is not exactly a good idea. What happens when engine does not meet your expectations and you need to modify it? With a submodule you just… modify it and rebuild. If engine is built separately then it is no longer easy.


That is the same thing as with library. I want separate entity - i.e.
different license terms, for example,
different build system. Also you don’t want to always build your code
together with library code.
When you build against some library you don’t submodule it, you just link
against it. Library life is separate from your project life,
you just use the library. If you updated the library and you can’t build
anymore you just either fix your project code or
set older version as dependency. There are many reasons to use engine as
library, not as in-ree submodule.

With Urho you get libUrho3D.a and some includes and you can link against
it, it is completely separate entity.