What math should all game developer know ?

There are many other forms of math that are useful, but at the absolute minimum you need to know these:

Algebra and Arithmetic

These are pretty basic, but if you don’t know these you won’t have a chance at even being a programmer let alone a game developer.

Vector Math

Objects in a game world are represented with vectors. A vector represents things like an object’s position, look direction and speed. Vector math calculations such as the Dot Product, Cross Product, Vector normalisation are essential.

How do I move my game object? The novice might say:

“I know! I’ll just do:” object.position.x++.

No no no. You need to use a vector calculation. The object needs a position, direction and acceleration vector which you can use to move the object. If you do the novice thing, you’ll get stuck in an unmaintainable mess, and how do you make it move in a direction not aligned with the world’s XYZ axis?

Quaternions

Main reason games use quaternions is because they represent rotations almost as space-efficiently as Euler angles, without suffering from Gimbal lock. Gimbal Lock begins when any Euler angle reaches a rotation of 90 degrees around any axis: you immediately lose a degree of freedom. Quaternions address this issue by adding a fourth dimension. If you stuck with Euler angles, you’d have to restrict one axis to never rotating more than ~89 degrees.

Physics

If you are going to be programming the math for physics responses in a game, then taking a physics class wouldn’t have been a bad idea.

Reasons will you need to know physics equations:

Making a ball bounce (see: co-efficient of restitution)
Make a ball move in a direction with ‘x’ newtons of force
Make something have more or less friction so it will slide at a different speed
Collision responses: What direction will the object rotate when I hit it ‘here’?
If you use a physics engine (or a game engine which has the physics engine inbuilt) then you can get away with knowing very little about physics. Still, it’s quite good to know when you need to get your hands dirty because the physics engine isn’t performing properly.

Advertisements

as3 game particles

Günümüzdeki bir çok oyunda particle system dediğimiz olay mevcut. Ve yaptığımız oyunlara önemli bir katkısı olduğuda aşikar. Particle yapmanın bir çok yöntemi olmakla birlikte performans konusunda da tartışılır yanları var. Ben aşağıda en basit haliyle mini bir particle system yaptım kendim için. Buradaki particle system sadece ENTER_FRAME eventine bağlı ve saniye / 24 fps’de sürmekte tabii ki mobil için oyun yapıyorsak bu gibi şeylerden kaçınılmalı diye düşünüyorum. Neyse Starling’de bunun için özel bir class yapılmış bakmanızı tavsiye ediyorum. Buradan ve buradan inceleyebilirsiniz. Aslında buradaki işin özü tek bir objeden bir çok obje oluşturmak ve onlara çeşitli efektler dahil ederek realize bir görüntü sağlamak. Benim aşağıda yaptığım işlem ise çok basit şöyle ki;

İlk olarak bir dizi tanımlıyorum “particleArr” adında daha sonra bir de blur filter tanımlıyorum “blurFilter” daha sonra 24 saniyede bir olanları dinleyen bir eventim var oda “loop” adında daha sonra loop metodumun içinde “createParticles” adında bir metod daha oluşturararak particleslarımı dizimin içine ekliyorum. Daha sonra dizimin içine eklediğim particle objelerini “loop” metodumun içerisinde çeşitli işlemlere tabii tutarak blur filter da ekleyerek duman efekti yapmaya çalışıyorum.

Kodu denemenizi öneririm “tabii kopyala yapıştır olmadan” 🙂


var particleArr:Array = new Array();
var blurFilter:BlurFilter = new BlurFilter();
blurFilter.blurX = 10;
blurFilter.blurY = 10;
blurFilter.quality = 3;

addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void
{
	createParticles();

	for(var i:int = particleArr.length - 1; i > 0; i--)
	{
		var valDiff:Number = -(mouseX * 0.005);

		particleArr[i].filters = [blurFilter];
		particleArr[i].x += particleArr[i].dx + valDiff;
		particleArr[i].y += particleArr[i].dy;

		if(particleArr[i].life-- <= 0)
		{
			mcContainer.removeChild(particleArr[i]);
			particleArr[i] = null;
			particleArr.splice(i,1);
		}
	}
}

function createParticles():void
{
	var p:Particle = new Particle();
	p.x = 100;
	p.y = 100;
	p.life = 100;
	p.dx = Math.random () * 2 - 1;
	p.dy = -1;
	mcContainer.addChild(p);

	particleArr.push(p);
}

as3 webcam deny button dispatched

Kullanıcının web camerasını kullandığımız uygulamalarda, izin verip vemrmediğini bilmeden işlem yaparsak uygulamanın kurgusundan çıkmış olabiliriz çoğu zaman ve hatalarla karşılaşabiliriz. Örneğin kullanıcının uygulamayı kullanabilmesi için camerasının olmasını şart koyuyorsak ilk olarak yazılım tarafında bizim kullanıcının kamerasının olup olmadığını kontrol etmemiz gerekir. Eğer kullanıcının kamerası varsa işlemimize devam eder eğer yok ise kamerasının olmadığını, kamerası olmadan uygulamaya devam edemeceğini söylebiliriz. Bunun için aşağıdaki kodları uygulamamız gerekir.

İlk olarak camera’nın null yani olup olmadığını kontrol ediyoruz ilk koşulda null değilse kamerası var eğer null ise kamerası yok demektir. Daha sonra bu adımı atlattıktan sonra daha sonraki adım kullanıcının kamerasını kullanıp kullanmayacağını sorgulamaya geldi. Onuda cameranın StatusEvent classı ile yapıyoruz. Fonksiyon iki değer döndürüyor “Camera.Muted ve Camera.UnMuted” bunlardan ilk camersını kabul etti diğeri ise kabul etmediği anlamına geliyor.

var cam:Camera = Camera.getCamera();

if (cam != null)
{
    cam.addEventListener(StatusEvent.STATUS, statusHandler);
    var vid:Video = new Video();
    vid.attachCamera(cam);
    addChild(vid);
}
else
{
    trace("kamerası yok.");
}

function statusHandler(event:StatusEvent):void
{
    // Bu olay dinleyicisi allow ve deny tuşlarına bastığındaki olayları tetikler
	switch(event.code)
	{
		case "Camera.Muted":
			trace("Kamerayı reddeldi.");
		break;

		case "Camera.Unmuted":
			trace("Kamerayı kabul etti.");
		break;

	}
}