Birçok kişi günümüz GameMaker'ından bahsederken hâlâ GMS2 der. Diyelim ki oyuncu sağa sola yürüyor ve kamera titriyor çünkü pozisyon kesirli değerler içeriyor. Proje klasörünü aç, semptomu 1 cümlede anlat ve PixelTread'in kodu bulmasını sağla. Aracı klasörü list_dir ve glob ile tarar, hareket ve kamera betiklerini read_file ile okur ve küçük bir değişiklik önerisi olarak diff sunar. Sen onaylayana kadar hiçbir şey değişmez; bu yüzden ilk oturum, her aracın ne işe yaradığını öğrenmenin güvenli bir yoludur. Aynı döngü çoğu küçük hata için çalışır: anlat, oku, incele, test et. Her tur editörde biter; orada oynat'a basar ve sonucu kendin görürsün. İlk düzeltme yeterli değilse neyin değiştiğini anlat ve sonraki kart önceki üzerine inşa edilir. Çalışırken projeyi editörde açık tut.
01
Klasörü aç
Sohbetin çalışma klasörü olarak GameMaker proje klasörünü seç; böylece dosya araçları betiklerini ve projenin metin dosyalarını görebilir. Her hata için yeni bir sohbet başlat; bu da her konuşmayı tek bir sorun ve tek bir diff ile sınırlı tutar. Çalışma klasörü dosya araçları için sınırdır; onu projeye ve başka hiçbir şeye işaret et. O klasörün dışındaki hiçbir şey dosya araçları tarafından kapsanmaz.
02
Sorunu anlat
Ne gördüğünü ve nerede olduğunu yaz; örneğin oyuncu dönerken kameranın titrediğini belirt ve biliyorsan ilgili betiği yaz. Somut bir semptom, aracın grep ile arayabileceği bir şey verir. Zaten ne denediğini ekle; bu, aracı tekrar etmemeye iter. Kısa cümleler iyi çalışır.
03
Diff'i incele
Her kartı oku, diff'i aç ve sadece anladığın satırları kabul et. Geri kalanı reddet ve nedenini yaz; aracı tekrar dener. Ask first modu dosya değiştiren her işlemden önce durur; böylece arkandan bir şey kaydedilmez. Tam diff'i görmek için genişletilmiş kartı aç; sadece özet satırını değil.
04
Derle ve test et
GameMaker editöründe derlemeni çalıştır, odayı oynat ve bir sonraki adımın gerçeklerden başlaması için ne gördüğünü geri bildir. Derleme başarısız olursa, logu klasördeki bir dosyaya yapıştır ve aracı okumasını sağla. Sonucu sohbete yaz; böylece sonraki isteğin net bir başlangıç noktası olur. Kabul edilen her değişiklikten sonra aynı testi aynı odada çalıştır.
Küçük bir hareket betiği
PixelTread · Pozisyonu yuvarla● Ask first
Kamera titremesini durdurmak için çizmeden önce oyuncunun pozisyonunu yuvarla.
read_filescr_move.gmlread
grepdraw_sprite3 eşleşme
edit_filescr_move.gml+2 satır
Shellbuildexit 0
bir sonraki adımdan önce onayınızı bekliyorReddetKabul et
scr_move.gml
// Move an object with the arrow keys
function scr_move(_speed) {
var _r = keyboard_check(vk_right);
var _l = keyboard_check(vk_left);
var _d = keyboard_check(vk_down);
var _u = keyboard_check(vk_up);
x += (_r - _l) * _speed;
y += (_d - _u) * _speed;
// keep the position on whole pixels
x = round(x);
y = round(y);
}
İşlev, ok tuşlarını keyboard_check ile okur, x ve y'yi bir hız değeriyle hareket ettirir ve her ikisini de tam piksellerde çizilecek şekilde yuvarlar. Yuvarlama, yukarıda anlatılan titremenin çözümüdür. Bu tür bir betik tam olarak aracının açabileceği, değiştirebileceği ve diff olarak gösterebileceği bir şeydir; bir odaya dakikalar içinde test edebilirsin. Önce bir betik varlığı olarak kaydet ve bir seferde bir satır değiştir. Aracı her değişikliğin üzerine bir yorum eklemesini iste; böylece daha sonra bulabilirsin. _speed gibi yer tutucu isimler kolayca yeniden adlandırılabilir.
Game Maker Studio 2 ile başlatılan projeler için dört görev
Kendi betiklerini değiştirerek öğren
İnsanlar genellikle GameMaker kodlamasını gerçekten nasıl öğreneceklerini sorar; iyi bir cevap gerçek betikleri değiştirip ne olduğunu izlemektir. Küçük bir proje aç ve aracı bir betiği satır satır açıklamayı sor. Aracı dosyayı read_file ile okur ve web_search kullanarak resmi kılavuzdan işlev adlarını alır. Ardından küçük bir değişiklik iste; örneğin daha hızlı bir yürüme hızı. Ask first modunda diff'i oku, kabul et, derle ve oynat. Her gün yeni bir değişiklik ile tekrarla ve aracı write_file ile her düzenlemenin seni ne öğrettiğini hatırlatan bir notlar dosyası yazsın. Yavaş ilerleme yine de ilerlemedir.
Yarı saydam bir parça ile sprite çiz
Örneğin suya giren bir karakterin alt yarısı gibi bir sprite'nin sadece bir kısmını şeffaf yapmak isteyebilirsin. Aracı draw betiklerini read_file ile okur, mevcut draw çağrısını grep ile arar ve sprite'yi draw_sprite_part_ext ile iki parça halinde çizmek için edit_file değişiklikleri önerir; bunlardan birinin alfa değeri daha düşüktür. Plan only size önce 2 parçayı gösterebilir. Kısa ve test edilebilir. Diff'i kabul et, odayı çalıştır ve piksel düzeyinde iki parça arasındaki birleşimi kontrol et; çünkü bir piksellik boşluk harekette kolayca görülür. Su seviyesi hareket ederse aracı bölünmeyi bir değişkene bağlamasını iste.
Bir duvarın önünde hareketi durdur
Bir nesneye çarpmadan önce hareketi durdurmak için bir betik sonraki pozisyonu test etmeli ve sonra hareket etmelidir. Aracı hareket betiğini okumasını ve her adımı hedef pozisyonda bir place_meeting kontrolüne sarmalamasını iste. edit_file kartı yeni satırları gösterir ve Shell derleme komutunun exit kodunu bildirir. Odada bir duvara yürü. Önce diff'i incele, sonra yavaş ve hızlı hızda test et; çünkü hızlı bir nesne ince bir duvarı hâlâ atlayabilir ve eğer öyleyse daha küçük bir adım iste. Test odasını küçük tut; bir duvar ve bir oyuncu ile.
Bir build logunda ilk hatayı bul
Uzun bir build logu önemli satırı gizler. Logu proje klasöründe bir metin dosyası olarak kaydet; sonra aracı read_file ile açmasını ve error kelimesi için grep ile aramasını iste. İlk hatayı betik adı ve satır numarasıyla birlikte bildirir ve betiği okuyarak edit_file ile bir çözüm önerebilir. İlk hatayı düzeltmek genellikle altındakileri de temizler. Ask first'de diff'i kabul et, tekrar derle ve hata sayısının azalıp azalmadığını görmek için yeni logu eskiyle karşılaştır. Log temiz olana kadar tekrarla.