How does the SDK fit into the dev cycle?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 11/07/2012 at 12:53, xxxxxxxx wrote:

    I don't know if this is something that Maxon can't comment on publicly or not.
    But I was just curious about how the SDK fits into the overall development process.

    When the devs. write new classes and things to make new options for each new version. Do they write the code into the same SDK project that we users use to make plugins?
    Or do they develop new things in some special project/s that only Maxon employees have. Then someone has to manually port it to the SDK?

    There are tons of behind the scenes videos & articles on making games & movies.
    But I've never seen a behind the scenes article about the process the programmers go through. Detailing the process from meetings_to_Class development_to_SDK updates for the user base to use.
    I'm interested in learning how and where the SDK we use to write plugins fits into the whole development process.

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 06/08/2012 at 10:01, xxxxxxxx wrote:

    Howdy,

    Well, I'm not privy to the details, but from what I understand, most everything in Cinema 4D is programmed like a plugin through the API.

    Adios,
    Cactus Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 08:56, xxxxxxxx wrote:

    Which is what exactly?

    Is the API a completely different version of the SDK that we use?
    Or is the API the same thing we use. But with certain things like base classes removed from it?
    And if they remove things. How do they do that without breaking it?

    I don't understand how that process from API->SDK works. And I've never seen it explained very well in any detail.

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 09:24, xxxxxxxx wrote:

    API = Application Programming Interface
    http://en.wikipedia.org/wiki/Application_programming_interface
    SDK = Software Development Kit
    http://en.wikipedia.org/wiki/Software_development_kit

    Basically the API of CINEMA 4D is the resource '_api' folder; a set of classes to extend the application.
    A minimum SDK of CINEMA 4D would be only the API but we also have the API's documentation, the examples, the Resource Editor etc.

    Originally posted by xxxxxxxx

    Which is what exactly?

    Is the API a completely different version of the SDK that we use?
    Or is the API the same thing we use. But with certain things like base classes removed from it?

    The API and SDK of CINEMA 4D are the same.

    Originally posted by xxxxxxxx

    And if they remove things. How do they do that without breaking it?

    This sometimes happens between releases that we break the API/SDK and plugins have to be recompiled and/or their code adapted.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 09:26, xxxxxxxx wrote:

    Howdy,

    Well, to clarify:
    The API (Application Programming Interface) is part of the SDK (Software Development Kit). The SDK consists of an example plugin project that includes the API project in its compilation. It's the API that has all the library function calls that interface with the inner core code of Cinema 4D's engine, which accesses things like the GUI elements, rendering, math functions, display functions, etc., that are all part of the Cinema 4D core engine code. Most of Maxon's Cinema 4D developers may only use the API to program the built in tools and expressions. Christian and Philip Losch, the creators of Cinema 4D, may be the only ones with access and therefore the ability to change the core engine code.

    It's typical of 3D game and application developers to first code the engine, and then code an API to gain access to that engine for future development, by creating dynamic libraries (plugins) that can be loaded on start up.

    Edit,
    Hehe, Yannick beat me to the punch. 😂

    Adios,
    Cactus Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 09:59, xxxxxxxx wrote:

    Thanks for the information guys. It's becoming less murky to me now.

    But if the SDK contains the API. And the developers use this same API to make new things. Then I should be able to look in the _api folder. And see the code the developers wrote to make those new things work.
    But if you look through those .cpp files. They all reference other things(.h, .cpp, C4DOS) that are not included anywhere in the SDK.

    So I'm left wondering.
    -Where are these files that hold the actual code that does the actual work?
    -Is the developer's version of the SDK different than ours?
    -How are the developers separating these files from the rest of the SDK?

    See what I'm saying?
    If the SDK we use contains everything including the full API except for some core C4D code. Then I should be able to look in the _api folder and look up how something was written.
    But I can't. They only contain references to things I can't find anywhere in the SDK.
    So the developers must be using either a completely different SDK. Or a different , More complete, version of the SDK that we use. Right?

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 10:06, xxxxxxxx wrote:

    Howdy,

    No, when you look in the api folder and look at the .cpp files, all you are seeing are the wrapper functions that make the API calls to the core engine.

    EDIT:
    You may also see some wrapper functions for some of the tools that the developers created as dynamic libraries. You could actually create an API to your own plugin, by creating a library and wrapper functions. Take a look at the SDK documentation on "Creating libraries" for more information.

    Adios,
    Cactus Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 10:46, xxxxxxxx wrote:

    OK. I think I understand.

    The devs write new classes with the SDK... Test them out... Then when they are approved by the lead programmer or manager. The new classes get placed into the core engine. And the SDK is updated with wrappers to them.

    Does that sound right?

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 11:09, xxxxxxxx wrote:

    Howdy,

    Not quite. I don't think everything that is in API has to be in the core engine code. As I pointed out, you can make an API for your own plugin. So, I would think that the developers of the built in tools, objects and expressions can simply add their wrapper functions and wrapper classes to the API code. Remember that the API consists of mostly the wrappers to be included in your plugin code.

    Adios,
    Cactus Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 11:45, xxxxxxxx wrote:

    Lol. Now we're going in circles.😂
    If they don't add the classes containing the code that does the actual work to the core engine. Then the classes have to exists somewhere in the SDK itself. Right?
    But they don't(ASFAIK). Because then any user could see that proprietary code.
    So where are they? Where are the classes with the code? All we see is the wrappers in the _api folder.

    I have all of these annoying little questions about the little details that always gets glossed over when people talk about API's. It's rather frustrating.

    -ScottA



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 12:03, xxxxxxxx wrote:

    Howdy,

    No. The class's source code that you're wanting to see is not available, because it has been compiled into dynamic libraries, which the wrapper functions of the API allow you to communicate with those compiled dynamic libraries. Those dynamic libraries are in the Modules folder of the root directory and also in the modules folder of the resource folder.

    If you look at the Cinema 4D application itself, it is only 37mb. The Modules folder is 59mb and the modules folder is 278mb. So you can see that most of the code of Cinema 4D has been compiled into dynamic libraries that are loaded at runtime.

    Adios,
    Cactus Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 07/08/2012 at 12:30, xxxxxxxx wrote:

    Ah. I see.
    That clears up my confusion about the classes.

    I've never built a library yet in C++. It's one of the things on my "need to learn" list.

    Thanks a lot for the help,
    -ScottA


Log in to reply