PICO-8, oyun geliştirmeyi öğrenmek istiyorsanız kullanabileceğiniz mükemmel bir araçtır. Retro, 8 bit tarzı oyunlar oluşturabilir ve bunları herkesin oynaması için çevrimiçi olarak dağıtabilirsiniz.
PICO-8, eksiksiz bağımsız oyunlar oluşturmak için kendi hareketli grafik düzenleyicisini ve müzik bestecisini sunar. PICO-8’in nasıl çalıştığını öğrenmek için basitten başlamak en iyisidir.
PICO-8 Konsolunu Çalıştırma
PICO-8, sanal bir konsol ve oyun geliştirme aracıdır . Basit retro tarzı oyunlar oluşturmak ve dağıtmak için kullanabilirsiniz.
PICO-8 uygulamasını alıp çalıştırarak başlayın:
- Yazılımı itch.io ana sayfasından satın alın ve indirin . PICO-8’i Windows, macOS veya Linux için indirebilirsiniz.
- Uygulamayı çalıştırın ve şöyle bir başlangıç ekranı görmelisiniz:
- Siyah bir arka plan üzerinde bir piksel yazı tipinde beyaz metin gösteren PICO-8 önyükleme ekranı. Bir imleç kullanıcı girişini bekliyor.
- Bu, PICO -8 Wiki’de belgelenen diğer birkaç eylemle birlikte kartuşları yüklemek ve çalıştırmak için kullanabileceğiniz PICO-8’in komut satırıdır .
Kod Düzenleyicinin Temel Kullanımı
Basit bir program oluşturmak için kod düzenleyiciyi kullanarak ve ardından onu çalıştırarak PICO-8 programlamanın nasıl çalıştığı hakkında bir fikir edinebilirsiniz.
Önyükleme ekranında, kod düzenleyiciye girmek için ESC tuşuna basın. Esas olarak boş bir ekran görmelisiniz:
Boş bir dosya gösteren PICO-8 kod düzenleyicisi.
Kod düzenleyici basit ama kullanımı kolaydır. Şimdilik en basit programla başlayın:
PRINT(“HELLO, WORLD”)
Yukarıdaki kodu girdiğinizde, önyükleme ekranına dönmek için ESC’ye basın.
Artık programınızı çalıştırmak için RUN yazabilirsiniz. “HELLO, WORLD” metnini çıkarmalıdır.
PICO-8, popüler bir gamedev programlama dili olan Lua’nın bir alt kümesini kullanır .
Basit Bir Oyun Yazmak
PICO-8 kodunu yazıp çalıştırdıktan sonra, basit bir oyun denemenin zamanı geldi. Tic-tac-toe bir başlangıç oyunu için mükemmel bir seçimdir çünkü:
Sıra tabanlıdır, bu nedenle hiçbir şeyi zamanlama konusunda endişelenmenize gerek yoktur.
Temelde sadece iki kuraldan oluşan çok az mantık içerir.
Çok basit grafik gereksinimleri vardır.
Bu basit oyunun tam kodu bir GitHub deposunda mevcuttur . Bu dosyayı indirebilir, yerel kartuş klasörünüze kaydedebilir ve PICO-8 ile açabilirsiniz.
Bilgisayarınızın dosya tarayıcısında yerel kartuş klasörünüzü açmak için PICO-8 komut satırına KLASÖR yazın.
Oyun Döngüsü Tanıtımı
Hangi dili kullanırsanız kullanın, oyun geliştirme genellikle bir “oyun döngüsü” etrafında toplanır. Aşağıdaki süreçten oluşur:
Kullanıcı girişi al
Oyun durumunu güncelle
oyunu çiz
PICO-8, _init() , _update() ve _draw() işlevleri aracılığıyla bir oyun döngüsü için mükemmel yerleşik desteğe sahiptir . Bu işlevler özeldir çünkü PICO-8 gerektiğinde bunları otomatik olarak çağırır.
Bir oyunun iskeletini oluşturarak bunların nasıl çalıştığını görebilirsiniz. Bu ilk revizyon, farenizi hareket ettirdikçe hareket eden ekranda bir imleç gösterecektir.
_init() içinde gerekli eylemleri ayarlayarak başlayın . Bu işlev, başlangıçta yalnızca bir kez çalıştığı için kesinlikle oyun döngüsünün bir parçası değildir. Fare girişi gerektiren bir oyun için, etkinleştirmek için özel bir arama yapmanız gerekir:
function _init()
— enable mouse
poke(0x5f2d, 1)
end
_update işlevi, kullanıcı girdilerini ve oyununuzun durumuna ilişkin güncellemeleri yönetir . Fare girişini desteklemek için, işaretçinin konumunu takip edebileceğiniz yer burasıdır.
function _update()
mousex = stat(32)
mousey = stat(33)
end
PICO-8’deki değişkenlerin varsayılan olarak global olduğunu unutmayın, bu nedenle programınızdaki herhangi bir işlevin mousex ve mousey’ye erişimi olacaktır . PICO-8, yerleşik bir işlev olarak stat içerir. Fare, klavye ve tarih/saat dahil olmak üzere mevcut ortam hakkında çeşitli ayrıntılar verir.
Son olarak, ekranda bir işaretçi görüntülemek için bir _draw işlevi tanımlayın. Artı şeklindeki bir işaretçi için, geçerli fare konumunda bir dikey ve bir yatay çizgi çizebilirsiniz:
function _draw()
cls()
line(mousex, mousey – 4, mousex, mousey + 4)
line(mousex – 4, mousey, mousex + 4, mousey)
end
line() işlevi, PICO-8’de yerleşik olan başka bir işlevdir. İki nokta arasına bir çizgi çizmek için dört argüman gerekir: a noktasının x ve y koordinatları ve b noktasının x ve y koordinatları.
cls() işlevi ekranı temizler . Ekranı temizlemediğinizde ne olduğunu görmek için bu satırı kaldırmayı deneyin.
Kalan Oyun Öğelerini Çizim
Tic-tac-toe, dokuz karelik bir ızgara üzerinde gerçekleşir. Bunu dört çizgi kullanarak yeniden oluşturabilirsiniz: iki yatay ve iki dikey. Bir PICO-8 ekranı 128×128 piksel olduğundan, her kare 42 piksel olabilir ve ızgara çizgileri için 1 piksel bırakılır:
function draw_grid()
line(42, 0, 42, 127) — two vertical lines
line(85, 0, 85, 127)
line(0, 42, 127, 42) — two horizontal lines
line(0, 85, 127, 85)
end
Bir sonraki görev, verilen bir kareye bir sembol -hiçlik veya haç- çizmektir. Bunu, kullanıcı faresini boş bir karenin üzerine getirdiğinde hem mevcut “pano” hem de “önizleme” sembolünü görüntülemek için kullanabilirsiniz.
Bir “hiç” çizmek, basitçe PICO-8 circ() işlevini çağırma durumudur:
function draw_nought(x, y)
circ(x, y, 10)
end
Bir “haç” çizmek biraz daha karmaşıktır. Kesişen iki çapraz çizgi çizmeniz gerekecek:
function draw_cross(x, y)
line(x – 10, y – 10, x + 10, y + 10)
line(x + 10, y – 10, x – 10, y + 10)
end
Kalan çizim işlevi draw_square’dir . Varsa, belirli bir ızgara karede sembolü (çapraz veya sıfır) çizer. Ancak bu işlevi tamamlamak için oyun durumuna erişmeniz gerekir.
Oyun Durumunu Takip Edin
Anlamlı bir oyun oynamak için, varsa hangi sembolün hangi karede olduğunu takip etmenin bir yoluna ihtiyacınız olacak. PICO-8 çok boyutlu dizileri desteklerken, bunun gibi basit kullanım durumları için tek boyutlu dizileri kullanmak da aynı derecede kolaydır. Izgaradaki dokuz farklı konumu takip etmeniz yeterlidir:
p = {“”, “”, “”, “”, “”, “”, “”, “”, “”}
Bu dizinin öğelerine, diğer dillerden tanıdık bir sözdizimi kullanarak erişebilirsiniz. Örneğin:
— store a 0 in the top-left square
p[1] = “0”
— test the value in the bottom-right square
if (p[9] == “x”) then
PICO-8 dizileri, birçok dilde olduğu gibi dizin 0’da değil, dizin 1’de başlar.
Bir sütun ve satır referansından bu dizideki bir dizine çeviri yapabilir ve tekrar geri dönebilirsiniz. Ekranın 128×128 ve ızgaranın 3×3 olduğu gerçeğini kullanarak, x ve y koordinatlarını aşağıdaki gibi ızgara referanslarına dönüştürebilirsiniz:
mousecol=flr(mousex/42.666)
mouserow=flr((mousey/42.666) % 3)
Kullanıcı Girişini İşleme
Fare konumuna benzer şekilde fare düğmesine basışları takip edebilirsiniz. _update içinde , durumu takip etmek için global bir değişken kullanın ve sol fare düğmesinin aşağıda olup olmadığını kontrol etmek için stat(34) öğesini çağırın:
if (down and stat(34) == 0) then
down = false
end
if ((not down) and stat(34) == 1) then
down = true
end
Aşağıyı takip etmek, butonun ilk ne zaman tıklandığını belirlemenizi sağlar, çünkü stat() size sadece butonun çalıştığında kapalı olup olmadığını söyler.
Kazanma Durumunu Tespit Etme
Bir tic-tac-toe oyunu şu durumlarda sona erer:
Aynı satırda, sütunda veya köşegende aynı sembolün üç örneği var.
Tüm kareler dolu.
check_for_win işlevi, mevcut oyun durumunun her iki koşulu da karşılayıp karşılamadığını belirler . Bununla başa çıkmanın birkaç yolu vardır, ancak tic-tac-toe gibi basit bir oyun için kaba kuvvet yaklaşımı genellikle en kolayıdır:
for a = 1,3 do
// columns 1, 2, and 3
if p[a] != “” and p[a] == p[a + 3] and p[a] == p[a + 6] then
finished = true
winner = p[a]
end
end
Bu kod alıntısı, sütunların kontrolünü gösterir. Ana ızgara dizisindeki uygun konumlarda boş olmayan eşleşen değerleri arar. Kazanan bir satır keşfederse, bu kod, kazanan mesajın _display() içinde görüntülenmesini sağlayan iki global değişkeni ayarlar .
Oyuncu için bir kazanç gösteren bir PICO-8 tic-tac-toe oyunu.
Oyununuzu Paketleme
Başkaları oynamadıkça bir oyun yaratmanın bir anlamı yok. Neyse ki, PICO-8 sizi korudu. PICO-8’in komut satırında aşağıdakileri çalıştırarak bir yürütülebilir dosya oluşturabilirsiniz:
Programınızı başlatmak için RUN yazın .
Çalışırken ekran görüntüsü almak için F2 tuşuna basın. PICO-8 bunu oyununuz için küçük resim olarak kullanacaktır.
İHRACAT TICTACTOE.HTML yazın . HTML, oluşturulması en hızlı ve en taşınabilir biçimdir.
PICO-8 ayrıca Windows, macOS ve Linux için yerel ikili yürütülebilir dosyaları da destekler. Bunları oluşturmak için EXPORT TICTACTOE.BIN kullanın . Hangi formatı seçerseniz seçin, PICO-8 dosyalarınızı kartuş klasörüne aktaracaktır.
PICO-8 Sadece Başlangıç Olabilir
Bu basit oyun, takip çalışmaları için bol miktarda potansiyele sahiptir. Grafiklerde iyileştirmeler yapabilir veya CPU’nun hareketlerine biraz mantık ekleyebilirsiniz. Ayrıca iki oyunculu bir versiyon yapabilir ve oyuncunun sembolünü seçmesine izin verebilirsiniz.
Çoğu PICO-8 oyun geliştiricisi, yarattıklarını ücretsiz olarak sunar. Profesyonel oyun geliştirme dünyasında Unreal Engine, GameMaker ve Unity gibi araçlar daha yaygındır.