Advices for beginner programmer


#1

Hi guys,

I 've just start to learn coding and i want to know how to contribute to speed up armory developpement. Also, my question is how to implement missing features in armory. Armory is written in haxe, blender is written in C/C++ so to implement something like missing constraints or anything else what do i need to do.

Does implementation is just a translation from blender operator written in c/c++ to haxe ?? what are the steps to follow ??
I’m aware that is time consuming for someone who doesn’t anything about coding, but i have to learn for my personnal needs so. I need blender operators that are missing in armory so what don’t do it myself !?

Any advices are welcome ! :slight_smile:


#2

I must candidly counsel you to walk before you run. I have programmed digital computers literally for decades and I find both the Blender and the Armory code-base to be quite daunting.

Both Blender and Armory are open-source, available e.g. at GitHub, and I would encourage you to simply look at the source-code of Armory, which you can do on-line. You can literally see how Armory is built. You can learn more about Haxe and other important Haxe systems like “OpenFL” at their respective web-sites.

Decades ago, a then well-known tech-guru known as “David-I” published a regular column called, A Sip From the Fire Hose, and I simply want to let you know in advance that your initial encounters with this stuff are going to feel like that: like someone hit you in the face with a cast-iron skillet. Believe it or not, “it’s par for the course.”

Haxe is, at its core, a programming language that creates output consisting of source code, which is then translated into a running application by the platform’s own native tools. So, you could (for example) take the same Haxe program and (maybe …) “target” it, say, to: Flash, JavaScript, C++, and Java.


#3

Blender integration is written in python and armory doesn’t use c/c++ for anything related to blender.
Python in blender is used for gui and for connecting to armory(again gui), c/c++ is only used when you have to develop blender feature itself, so in noway c/c++ is going to be useful for armory development with blender, doesn’t mean that c/c++ isn’t use at all in armory development, c/c++ is used in Kore, it is really less likely that you will need to touch Kore yourself.

What written in Haxe is Kha and Iron and couple big/small libraries like Zui, Armory2d(Canvas Editor), Bullet(Physics) etc.

Think of this as this way, The core working is Iron, below Iron is Kha(i.e., Iron is build on kha), Armory is merely connection between Iron and Blender.

So what Armory has is Python files that connect Blender and Iron, Shader (What armory’s rendering looks like, it has shader of voxels GI/AO, compositor, etc.) and also handle things like renderpath, and has some internal system

What Iron has is everything(It itself is engine), this include how animation works, vectors, maths, how renderpath works, handle how it own .arm format works.

What Kha has is well, this SDL but on Steroid, this handle cross-platform exporting thingie.(I think you will need to touch kha and kore less)

Depends on what type of missing feature you want to implement.

These language and things you will basically need to learn: Haxe, Python and Blender’s Api, Glsl shading, json parsing in haxe(not in top list but it is used in some areas)

But like @MikeRobinson is trying to say, it not gonna be easy trying to contribute, you must continue to learn and learn, so the very first step is completely understand how Armory works and its structure

(I Might be wrong somewhere)

Links:


#4

Hey @mistajuliax! Glad to hear that you want to learn to help contribute to Armory. So the good news is that you shouldn’t need to contribute to Blender or write C++ for the large majority of useful contributions that you will need to do; the code you will need to write will be in Haxe and Python which are both decently easy to understand.

I’ve just publicized an Armory architecture document that I wrote for my team. This will help you get an idea of the technologies involved:

Implementing something like missing constraints, would involve finding the code that checks for the existence of constraints in the Armory Python plugin. The plugin is going to do something like read the constraint list of all of your scene objects using the Blender Python API. In response to the constraints, the plugin might add some data to the exported scene object like the constraint name and the parameters for the constraint.

The data that is exported to the scene is going to be read by Haxe code in either iron or armory ( which contains Python code, like I’ve already said, and Haxe code as well ). You would extend the existing Haxe code that deals with object transforms and constraints to implement the missing constraints in Haxe. There will be no C/C++ code involved.

C and C++ are involved only if you need to work with low level access to the system or Graphics, and Rober and Lubos will mostly take care of that for those of us who can’t. :slight_smile:

It can be a bit of a hurdle figuring this stuff out, but it is not impossible. I’ve been able to learn everything I know about Armory with only what is available to everybody, and by spending some time looking around and reading source code. If you don’t already know how to program Haxe or Python, then definitely get a little comfortable with those first, and ask specific questions on the forum if you run into trouble. :+1:


#5

Thank you guys, this will be helpful to begin in right direction.


#6

To clarify further – you won’t be writing C++, but Haxe might generate C++ source-code and pass it to the appropriate compiler if that’s your target … of the moment.

I’d strongly suggest that you look at source-code of existing Haxe things … study Haxe apart from Armory so that you can better understand the purpose that it serves. (I use Haxe for a lot of things which have nothing to do with 3D graphics or games. For instance, I abhor the thought of having to write JavaScript source-code “by hand” anymore …)

Also – I want to be sure that I haven’t said anything to discourage you. Many(!) decades, now, in my career of writing computer software, I still consider it to be challenging, demanding … and, fun. I hope that you find it to be as fascinating and as engaging as I [still] do.


#7

Hi,
thanks for advices. I’m not discourage at all … what i love in armory is to make everything in blender clic play or build and that’s it. I’m using unreal engine which it’s great but import/export process is time consuming and bothering me. For my new work i have to learn C# and unity so i have to learn the basis of coding, etc … As a hobbyist i want lo learn and implement fonctions i need from blender to armory for my demo level. I need missing constraint, more particles options, force field more node and material etc … So why don’t do it myself :smiley: That’s my way ! even if it’ll be a long journey …

Cheers.