Merhaba arkadaşlar,
Bugün sizlere ActionScript 3.0 ve FlashPunk ile oyun yapmayı anlatacağım.
Neden FlashPunk?
FlashPunk, yapısı itibarıyla hem basit hem de oldukça esnek bir motor.
Başlangıç: Proje Yapısının Kurulumu
Önce AS3 projesi oluştururken dikkat etmeniz gereken birkaç nokta var:
Burada super(640, 360, 60) kısmı oyunun çözünürlüğü ve FPS değerini belirliyor.
World ve Entity Mantığı
FlashPunk’ın temelinde iki yapı var:
World = Sahneleriniz / ekranlarınız
Entity = Oyundaki her şey (karakter, düşman, obje, arka plan vs.)
İlk dünyayı şöyle tanımlayabilirsiniz:
Basit Bir Player Sınıfı
Bu bölümde sadece temel hareket mantığını yazalım. Animasyonları, çarpışmaları sonraki bölümlerde açacağım.
Bu haliyle basit ama çalışan bir karakterimiz var.
Sonraki yazıda görüşmek üzere. Hoşçakalın.
Bugün sizlere ActionScript 3.0 ve FlashPunk ile oyun yapmayı anlatacağım.
Neden FlashPunk?
FlashPunk, yapısı itibarıyla hem basit hem de oldukça esnek bir motor.
- Tile tabanlı oyunlar için ideal
- Entity/World mantığı anlaşılır
- Update/Render döngüsü net
- Karmaşık şeylere gerek yok, hızlıca oynanabilir bir şey ortaya çıkıyor
Başlangıç: Proje Yapısının Kurulumu
Önce AS3 projesi oluştururken dikkat etmeniz gereken birkaç nokta var:
- Yeni bir AS3 Project açın (FlashDevelop, Animate, Flash Builder fark etmez).
- FlashPunk kütüphanesini src yoluna ekleyin.
- Ana sınıfınızın Engine sınıfından türemesi gerekiyor. Örneğin:
Kod:
package
{
import net.flashpunk.Engine;
import net.flashpunk.FP;
public class Main extends Engine
{
public function Main()
{
super(640, 360, 60, false);
}
override public function init():void
{
FP.world = new GameWorld();
}
}
}Burada super(640, 360, 60) kısmı oyunun çözünürlüğü ve FPS değerini belirliyor.
World ve Entity Mantığı
FlashPunk’ın temelinde iki yapı var:
World = Sahneleriniz / ekranlarınız
Entity = Oyundaki her şey (karakter, düşman, obje, arka plan vs.)
İlk dünyayı şöyle tanımlayabilirsiniz:
Kod:
package
{
import net.flashpunk.World;
public class GameWorld extends World
{
public function GameWorld()
{
add(new Player(100, 100));
}
}
}Basit Bir Player Sınıfı
Bu bölümde sadece temel hareket mantığını yazalım. Animasyonları, çarpışmaları sonraki bölümlerde açacağım.
Kod:
package
{
import net.flashpunk.Entity;
import net.flashpunk.graphics.Image;
import net.flashpunk.utils.Input;
import net.flashpunk.utils.Key;
public class Player extends Entity
{
[Embed(source = "gfx/player.png")] private const PLAYER_GFX:Class;
public function Player(x:Number, y:Number)
{
super(x, y, new Image(PLAYER_GFX));
}
override public function update():void
{
if (Input.check(Key.LEFT)) x -= 2;
if (Input.check(Key.RIGHT)) x += 2;
if (Input.check(Key.UP)) y -= 2;
if (Input.check(Key.DOWN)) y += 2;
}
}
}Bu haliyle basit ama çalışan bir karakterimiz var.
Sonraki yazıda görüşmek üzere. Hoşçakalın.
Discord
![[-]](https://secret-forest.xyz/themes/cerulean/collapse.png)