[program-l] Re: About Mathematics and Software Development

  • From: Yuma Decaux <jamyad7@xxxxxxxxx>
  • To: "program-l@xxxxxxxxxxxxx" <program-l@xxxxxxxxxxxxx>
  • Date: Sat, 2 Apr 2016 18:22:57 +1000

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> 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]
** If this link doesn't work then send a message to:
** 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]
** or send a message, to
** program-l-request@xxxxxxxxxxxxx with the Subject:- faq

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Other related posts: