# Prerequisities for Roomle Content Scripters
This document sums up recommended skills and prerequisities for scripting Roomle content (= writing component definitions). Note, that a lack in some of these skills does not mean you can't be a good scripter!
# Programming skills
- ability to design and implement algorithms
- a feeling for object oriented programming (components act as objects, including inter-component data interactions)
- knowledge of any specific API not required
- basic programming consturctions (variables, expressions, conditions, loops, arrays)
- code versioning, preferably using Git
- ability to write understandable and maintainable high quality code, that follows good practices
# 3D graphics basics
This theoretical knowledge is not essential for scripting Roomle content, but are highly recommended and advantageous to study eventually:
- RGB color space
- textures
- normal maps
- shader values: roughness, metallicity, alpha, etc.
- primitives, meshes, sketches, extrusion
- vertices, triangles, normals, UVs
- transformations: movement, rotation
# Other non-mandatory, but advantegeous skills
- communicative knowledge of English (we have most documents and task descriptions in English, we also communicate in English or German)
- comments and ids should be unviversally written in English
- it is an advantage to understand products' origin language (to understand manufacturer's drawings, catalogues etc.)
- the most common language of produced configurator outside of English is German
- 3D vector algebra
- position and normal vectors
- transformations
- coordinate systems
- CAD, construction, engineering
- to understand and be able to measure in drawings, CAD models etc.
- 3D game engines
- experience in 3D game development - Unity3D, Unreal etc.
- because there you also bring 3D graphics to live 😃