0Pricing
Lua Academy · Ders

LOVE Oyun Döngüsü

load, update ve draw.

LOVE Oyun Döngüsü, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

LÖVE Nedir

LÖVE (love2d olarak da yazılır), tamamen Lua ile 2B oyunlar oluşturmanızı sağlayan ücretsiz bir çatıdır. Geri çağırma işlevlerini siz yazarsınız; motor da bunları sizin için çağırır.

Bir LÖVE oyunu, içinde main.lua dosyası bulunan bir klasörde yaşar. Bu klasörden love . komutuyla çalıştırdığınızda motor bir pencere açar ve döngüyü başlatır.

Üç Temel Geri Çağırma İşlevi

LÖVE, oyununuzu main.lua içinde tanımladığınız üç geri çağırma işleviyle çalıştırır: love.load, love.update ve love.draw.

Bunları kendiniz çağırmazsınız. Motor, love.load işlevini bir kez çağırır; ardından oyun çalıştığı sürece her karede love.update ve love.draw işlevlerini yineler.

function love.load() end
function love.update(dt) end
function love.draw() end

love.load: Bir Kez Yapılan Kurulum

love.load, oyun başladığında tam olarak bir kez çalışır. Durumu burada hazırlayın: görüntüleri ve yazı tiplerini yükleyin, tablolarınızı oluşturun ve döngü başlamadan önce değişkenleri başlatın.

Her karede yinelenmemesi için pahalı işlemleri love.update veya love.draw içine değil, buraya koyun.

function love.load()
  player = { x = 100, y = 100, speed = 200 }
  score = 0
end

love.update: Oyun Mantığı

love.update(dt) her karede bir kez çalışır ve oyun mantığınızı barındırır: nesneleri hareket ettirme, çarpışmaları denetleme, zamanlayıcıları güncelleme ve girdi durumunu okuma.

dt bağımsız değişkeni, son kareden bu yana geçen saniyeleri ifade eden zaman farkıdır. Güncellemeyi çizerken hiçbir zaman çizim yapmamalısınız; çizimi love.draw içinde tutun.

function love.update(dt)
  player.x = player.x + player.speed * dt
end

dt Neden Önemlidir

Kare hızı makineler arasında değişir. Her karede sabit bir miktar hareket ettirirseniz hızlı bir bilgisayar nesneleri yavaş bir bilgisayardan daha hızlı hareket ettirir.

dt ile çarpmak hareketi kare hızından bağımsız hâle getirir. speed * dt, "saniyede speed birimi" anlamına gelir; böylece kaç kare oluşturulursa oluşturulsun bir nesne aynı mesafeyi kat eder.

-- 200 pixels per second, on any machine
player.x = player.x + 200 * dt

love.draw: Görüntüleme

love.draw, love.update işlevinden sonra her karede bir kez çalışır. Ekranda gördüğünüz her şey burada love.graphics modülü kullanılarak çizilir.

Her çizim çağrısından önce ekran otomatik olarak temizlenir. Bu nedenle her karede, mevcut oyun durumunuzdan sahnenin tamamını yeniden çizmeniz gerekir.

function love.draw()
  love.graphics.rectangle('fill', player.x, player.y, 32, 32)
end

Tüm Döngüyü Birleştirme

Geri çağırma işlevlerini bir araya getirdiğinizde eksiksiz bir oyununuz olur: load oyuncuyu hazırlar, update onu dt kullanarak hareket ettirir ve draw görüntüler.

Bu yükleme-güncelleme-çizim döngüsü, ne kadar karmaşık hâle gelirse gelsin her LÖVE oyununun kalp atışıdır.

function love.load() x = 0 end
function love.update(dt) x = x + 100 * dt end
function love.draw()
  love.graphics.circle('fill', x, 150, 20)
end

Saati Okuma

Zamanlayıcılar oluşturmak için dt değerini biriktirin. Yaygın bir yöntem, geçen süreyi toplamak ve süre bir eşiği geçtiğinde işlem yapmak, ardından eşiği toplamdan çıkarmaktır.

Bu, kare saymaya göre daha güvenilirdir; çünkü kare sayıları donanıma bağlıyken dt gerçek saniyeleri izler.

timer = 0
function love.update(dt)
  timer = timer + dt
  if timer >= 1 then
    score = score + 1
    timer = timer - 1
  end
end

love.run ve Döngünün İç İşleyişi

Arka planda gerçek ana döngü love.run işlevindedir. Bu işlev love.load işlevini bir kez çağırır, ardından sonsuza kadar döner: olayları işler, dt değerini hesaplar, update ve draw işlevlerinizi çağırır ve kareyi görüntüler.

love.run işlevini nadiren geçersiz kılarsınız; ancak var olduğunu bilmek, dt değerinin ve geri çağırma işlevlerinin nereden geldiğini açıklar.

-- simplified idea of love.run
-- love.load()
-- while true do
--   dt = timer.step()
--   love.update(dt)
--   love.draw()
-- end

love.quit ve Yaşam Döngüsü

LÖVE, üç temel işlevin ötesinde yaşam döngüsü geri çağırma işlevleri de sunar. Oyuncu pencereyi kapattığında love.quit çalışır ve ilerlemeyi kaydetmenizi sağlar.

true değerini love.quit işlevinden döndürmek kapatma işlemini iptal eder. love.focus ve love.resize gibi diğer geri çağırma işlevleri pencere olaylarına yanıt verir.

function love.quit()
  print('Saving before exit...')
  return false  -- false lets the game close
end

Oyunu Duraklatma

love.update tüm mantığı yönettiği için duraklatma kolaydır: mantığınızı bir bayrağın arkasında koruyun ve oyun duraklatıldığında mantığı atlayın.

Çizim yine çalışır; böylece bir duraklatma katmanı görüntüleyebilirsiniz. Güncellemeyi çizimden ayırmak, döngü tasarımının bu kadar esnek olmasının tam nedenidir.

paused = false
function love.update(dt)
  if paused then return end
  player.x = player.x + player.speed * dt
end

Hızlı Denetim

LÖVE oyun döngüsünü ne kadar anladığınızı sınayın.

Özet

LÖVE, oyununuzu geri çağırma işlevleriyle çalıştırır: love.load bir kez kurulum yapar, love.update(dt) her karede mantığı işler ve love.draw her karede görüntüleme yapar.

dt değeri hareketi kare hızından bağımsız tutar; love.quit gibi yaşam döngüsü geri çağırma işlevleri de döngüyü tamamlar. Bu döngü her love2d oyununun temelini oluşturur.

Sıkça Sorulan Sorular

“LOVE Oyun Döngüsü” dersi ücretsiz mi?

Evet — “LOVE Oyun Döngüsü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“LOVE Oyun Döngüsü” dersinde ne öğreneceğim?

load, update ve draw. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“LOVE Oyun Döngüsü” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. LOVE Oyun Döngüsü
  2. Şekil ve Görüntü Çizme
  3. Girdiyi Yönetme
  4. Hareket ve Çarpışmalar
← Lua Academy Sayfasına Dön