Sounds like #5 refers to a 3d graph.
On Apr 2, 2016, at 4:22 AM, Yuma Decaux <jamyad7@xxxxxxxxx> wrote:
Hi,
Please don't take this as a must have set of skills to start coding an audio
game, and the below is only for a full binaural 3D audio engine with complex
A.I routines and gaming industry standard patterns for controlling the whole
system.
The list of things to have in tow is relatively large but in mathematics
here is what is regular occurence so far:
1-linear algebra: know your vectors, matrices and euler angles, trigonometry,
dot and cross products, and the transformations, rotations and scaling of
all. If you want to be more efficient, know the inverses of matrices, their
eigan values and vectors, co-variance matrices. These are all used for moving
your things around the world and A.I routines as well as encoding for
networking.
2-boolean algebra: Beyond the single true false logic, know your discreet
propositional maths, rules and laws like deMorgan's, conjunctive and
disjunctive, commutative, associative etc. They are useful for structuring
your system properly to guarantee the outcome you are looking for no matter
the arbitrary value input into a simulation.
3-Modular arithmetic: these are useful tools for encoding your system logic
into nicely isolated sets for turn based logic. The rules that come with
modular arithmetic gives you better code than long lists of if else or switch
statements which a lot of coders unfortunately use.
4-Statistics: most stats based computations are used for A.I routines, when
you start using rule systems over larger sets of objects, such as divising a
normal distribution and using randomisers that fall within a standard
deviation when you apply these rules to a simulation.
5-Graph theory: especially in a 3D audio game, this is very recurrent, so
knowing the relations between graph types, vertices or nodes and edges and
how they all interract will be essential to quote visualise your system or
world so you won't get lost. The audio part will also heavily use graphs for
connections between input through nodes through filters and finally through
the main output.
This is pretty much all you will encounter during the process of making a 3D
audio game. However, there are a few concepts as listed below that you will
need to know:
1-MVC pattern: Model View Controller pattern is very useful to mutually
exclude parts of your application, from the data you use and transform
throughout the game, to the way it interacts, finally going to the view or
interface which the user will interact with.
2-Entity Component System: This is the standard used by indie and large game
companies for their games. It allows an easy separation of large sets of
models without sub classing them and creating dependencies which will make
your code inefficient. This pattern uses components that can be readily
attached and detached from entities so that classes can be associated a
combination of features which are inherent to all entities or unique to
itself in a dynamic fashion. This system is not only limited to games, and it
guarantees a set of outcomes if you structure your system, allowing for
efficient parallelism and asynchronous computations as well as low cache
misses. I especially recommend the martin ECS which is the most optimised
albeit most complex system to implement.
3-Fly factory pattern: This design pattern allows you to be efficient with
caches, basically loading a set of assets once and assigning only references
or pointers to loaded data instead of loading multiple instances of an
object. The referencing requires more complexity in the code but the end
result is having much leaner memory allocation, allowing you to pack in way
more objects in your scenes without suffering lower framerates.
This is what I have encountered so far omitting details.
Good luck,
On 1/04/2016, at 2:28 AM, Sharon Hooley <shooley42@xxxxxxxxx
<mailto:shooley42@xxxxxxxxx>> wrote:
Hi,
How much knowledge of mathematics would I need to become a programmer of
software that doesn't really use it beyond the basic four operations,
addition, subtraction, etc? For example, I'd like to be able to create
interactive communication software and/or audio games.
Thanks,
Sharon H.** To leave the list, click on the immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe] ;
<mailto:program-l-request@xxxxxxxxxxxxx?subject=unsubscribe]>
** If this link doesn't work then send a message to:
** program-l-request@xxxxxxxxxxxxx <mailto:program-l-request@xxxxxxxxxxxxx>
** and in the Subject line type
** unsubscribe
** For other list commands such as vacation mode, click on the
** immediately-following link:-
** [mailto:program-l-request@xxxxxxxxxxxxx?subject=faq] ;
<mailto:program-l-request@xxxxxxxxxxxxx?subject=faq]>
** or send a message, to
** program-l-request@xxxxxxxxxxxxx <mailto:program-l-request@xxxxxxxxxxxxx>
with the Subject:- faq