top of page
Teknoloji
Unity, çok oyunculu mod, sunucular, kendi sunucunu barındırma, açık kaynak, derlemeler ve geliştirme araçları hakkında teknik yazılar.
Yeni sürüm neden 2026.7.19 ve neden 0.9.2 değil 🗓️
Bugün güncelleyen herkes 0.9.1 sürümünden 2026.7.19 sürümüne atlıyor. Yazım hatası gibi görünüyor ama bilinçli bir karar: sürümleme düzenimizi “anlamsal” sürümlerden tarih tabanlı sürümlere (yıl.ay.sayaç) değiştirdik. İşte nedeni. Eski düzen kimsenin sormadığı soruları yanıtlıyordu. Anlamsal sürümleme (0.9.1, 1.2.3 …) yazılım kütüphaneleri dünyasından geliyor. Orada harika: birinci sayı “hiçbir şey bozulmaz”, ikincisi “sadece eklemeler”, üçüncüsü “sadece onarımlar” sözü verir
Marcel Dütscher
28 Tem2 dakikada okunur
Toparlandık: GitHub önbelleğini sonunda doğru kullanıyoruz 🧹
Son teknoloji yazımızda derleme ve kontrol hattımızın gerçekte neye mal olduğunu ölçmüştük ve şunu bulmuştuk: para değil, bekleme süresi ve depolama. O yazı “temizlik işi planlandı ama henüz yapılmadı” diye bitiyordu. Beklenenden hızlı oldu: bugün öğlenden itibaren ana dalda. İşte rakamlar. Önce sonuç. Deposunun önbellek kullanımı 63 kayıtta 5,32 GB'tan 13 kayıtta 2,46 GB'a düştü. Eskiden her çekme isteğinde çalışan C# güvenlik analizi artık orada 4,5 dakika yerine 4 saniye s
Marcel Dütscher
27 Tem3 dakikada okunur
Ayda bin derleme çalıştırması ve hiçbiri bize para ödetmiyor ⚙️
Önce bir düzeltme. Bu yazının ilk sürümü, GitHub derleme dakikalarımızın tükendiği ve bunun bizi Pro hesaba geçmeye zorladığı iddiasındaydı. Bu yanlıştı, hem de belgelere tek bir bakışla aydınlanacak türden: herkese açık depolar için GitHub derleme dakikaları ücretsizdir. Artifact'lar ve önbellekler de. Deponuz mayıs sonundan beri herkese açık; yani tek bir dakika için bile hiç ödemedik ve asla ödemeyeceğiz. Metni sessizce düzeltmek yerine yeniden yazıp ölçümlerin gerçekte ne
Marcel Dütscher
26 Tem3 dakikada okunur
SignPath hayır dedi: Windows sürümlerimiz şimdilik imzasız kalıyor
Birkaç gün önce burada blogda size anlatmıştık: Windows yükleyicilerimiz için kod imzalama sertifikası almak üzere SignPath Foundation'ın ücretsiz açık kaynak programına başvurmuştuk. Şimdi cevap geldi ve bu bir hayır. Bu devblog sadece kazanımları kutlamak için değil, böyle bir projenin gerçekte nasıl gittiğini dürüstçe anlatmak için de var; bu haber de buraya ait. Kısa bir hatırlatma: mesele neydi? İmzasız Windows programları ilk açılışta “Windows bilgisayarınızı korudu” Sm
Marcel Dütscher
15 Tem2 dakikada okunur
GitHub'ımız artık konuşuyor: Otomatik geliştirici podcast'i 🎙️
Blocks Beyond The Stars'ın geliştirilmesi tamamen GitHub'da, herkesin gözü önünde yürüyor: her commit, her pull request, her sürüm okunabilir durumda. Ama dürüst olalım: akşamları kim bir commit listesini kaydırıp durur? Artık daha rahat bir seçenek var: proje haberlerini size sesli okutabilirsiniz. GitHub'ımızın artık kendi podcast'i var. Podlog nedir? Podlog, bir GitHub deposunu izleyen ve onu otomatik olarak sesli bir podcast'e dönüştüren bir hizmet. Projenizi bağlarsınız,
Marcel Dütscher
13 Tem1 dakikada okunur
Açık kaynak için ücretsiz kod imzalama: SignPath başvurumuz 🔏
Oyunumuzu Windows'a yükleyen herkes o anı bilir: “Windows bilgisayarınızı korudu”; SmartScreen “bilinmeyen yayıncı” diye uyarır ve önce “Daha fazla bilgi → Yine de çalıştır”a tıklamanız gerekir. Bu bir virüs değil; sadece yükleyicilerimiz henüz imzalı değil. Pahalı bir sertifika almadan bu uyarıyı ortadan kaldırmak istiyoruz. Kod imzalama sertifikalarının sorunu. Bir Windows yayıncı sertifikası (OV ya da EV) her yıl para tutar, çoğu zaman şirket doğrulamasına ve donanım anaht
Marcel Dütscher
12 Tem2 dakikada okunur
Git etiketinden canlı sunucuya: sürüm hattımız
Blocks Beyond The Stars'ın bir sürümü bugün tek bir komuttan oluşuyor: bir git etiketi göndermek. Sonrasında her şeyi makine yapıyor. Bu yazıda CI/CD hattımızı gösteriyorum ve bir hobi projesi için bile emeğin neden karşılığını verdiğini anlatıyorum. Sürüm iş akışı. v0.7.4 gibi bir etiket gönderilir gönderilmez GitHub Actions eksiksiz paketi derliyor: Windows yükleyicileri (kurulum, taşınabilir, MSI), bir Linux derlemesi, tarayıcı için bir WebGL derlemesi ve sunucu için bir D
Marcel Dütscher
7 Tem1 dakikada okunur
Oyuncuları atmadan sunucu bakımı
Sunucuyu güncellememiz gerektiğinde oyunculara tam olarak ne olur? Basit cevap fişi çekmek olurdu. Biz daha iyisini kurduk ve ideal olarak neredeyse fark etmeseniz de en sevdiğim özelliklerden biri. Duyuru. Sunucu, çalışan her dünyaya bir bakım mesajı gönderebilir. Oyunda geri sayımlı bir afiş belirir: "Sunucu 10 dakika içinde yeniden başlıyor." Mesajın elle kapatılması gerekir, ama ancak birkaç saniye sonra; böylece kimse savaşın hararetinde yanlışlıkla tıklayıp kapatmaz. Na
Marcel Dütscher
6 Tem1 dakikada okunur
Şifreler, hız sınırları ve e-postasız hesaplar
Blocks Beyond The Stars'ı çocuklar da oynuyor. Bu, yalnızca oyun tasarımını değil, arkasındaki güvenlik mühendisliğini de şekillendiriyor. Üç örnek. E-postasız hesaplar, bilerek. Bizde bir oyuncu hesabı için e-posta adresi gerekmiyor. Bu eksik bir özellik değil, bir karar: özellikle genç oyuncuların mümkün olduğunca az kişisel verisini istiyoruz. Saklamadığımız şey kaybolamaz. (Dürüst diğer yüzü: bu yüzden e-postayla "şifremi unuttum" yok. Bunu açıkça söylüyoruz.) Dünya şifre
Marcel Dütscher
6 Tem1 dakikada okunur
Oyun sunucusu filosu olarak küçük bir VPS
Tüm çevrimiçi dünyalarımız, yani portal, Resmi Dünyalar ve oyuncuların oluşturduğu dünyalar, kiralık tek bir Linux sunucusunda (VPS) çalışıyor. Veri merkezi yok, beş haneli bulut faturası yok. Bu yazıda sunucunun nasıl kurulduğunu ve yol boyunca neler öğrendiğimizi göstereceğim. Önce sağlamlaştırma. Oyunun sunucuya girmesine izin verilmeden önce temel güvenlik geldi: yalnızca gerekli portları açan bir güvenlik duvarı (ufw), otomatik giriş denemelerine karşı fail2ban ve yalnız
Marcel Dütscher
5 Tem1 dakikada okunur
Barındırılan dünyalarımız nasıl çalışıyor
İnternette, arkadaşlarının istediği zaman katılabileceği kendi dünyan, ve kimsenin sunucu kurması gerekmeden. Barındırılan Dünyalarımızın arkasındaki fikir bu; bu yazıda sana portaldaki "Oyna" düğmesinin arkasında gerçekte ne olduğunu göstereceğim. Her şeyin kalbi WorldHost: sunucumuzda dünyaları yöneten küçük bir hizmet. Her dünya kendi Docker konteynerinde çalışır; tamamen yalıtılmış, kendi kayıt dosyası, kendi bellek sınırı ve kendi işlemci sınırıyla. Kimse oynamıyorsa hiç
Marcel Dütscher
5 Tem1 dakikada okunur
Kamera arkası: 30 dakikada 28 YouTube videosunu nasıl yaptık 🎬
Bir baba, bir çocuk ve bir yapay zeka, bir yığın ham oyun görüntüsünü iki koca oynatma listesine nasıl dönüştürdü? Video düzenleyicide tek bir saat bile harcamadan. Sonunda Blocks Beyond the Stars için bir YouTube varlığımız var: 22 Shorts ve 6 daha uzun Let's Play / öğretici video. Dürüst olalım, bunların nasıl yapıldığı anlatmaya değer bir hikâye, çünkü asıl "kurgu" yaklaşık yarım saat sürdü. İşte tüm süreç. 1. Adım: Justus kayda basıyor 🎮 Her güzel oyun videosu birinin oy
Marcel Dütscher
2 Tem3 dakikada okunur
Bir hobi oyunu için 1000'den fazla test – israf mı?
Projemizde artık bin küsurdan fazla otomatik test var: sunucu tarafında yaklaşık 990, Unity istemcisinde yaklaşık 120. Bir aile projesi için bu abartı gibi geliyor. Aslında tam tersi; işte nedeni. Testler ikinci geliştiricimiz. Tek kişilik bir projede kod incelemesinde “Dur, bu üretimi bozuyor” diyecek kimse yok. Testler o meslektaş. Her oyun mekaniği (tarifler, oksijen, açlık, yaratık davranışı, dünya parolaları) her değişiklikte çalışan testlere sahip. Korkmadan yeniden düz
Marcel Dütscher
2 Tem1 dakikada okunur
Tarayıcıda bir voksel oyunu
Blocks Beyond The Stars yalnızca bir Windows ve Linux programı olarak değil, doğrudan tarayıcıda da çalışıyor; kurulum yok, portalda tek tık yeterli. Oraya giden yol beklenenden daha öğretici oldu. Unity WebGL başlı başına bir dünya. Unity uzun zamandır web'e dışa aktarabiliyor ama şeytan ayrıntıda gizli. En büyük engelimiz: tarayıcıda yerel yapıdaki gibi gerçek arka plan iş parçacıkları yok. Arazi sistemimiz normalde manzara meshlerini arka planda asenkron olarak oluşturur;
Marcel Dütscher
30 Haz1 dakikada okunur
Shader'larımızın yapıdan kaybolduğu gün
Unity editöründe her şey mükemmel görünüyordu. Bitmiş yapıda ise pembe yüzeyler ve eksik efektler vardı. Unity'nin en sinsi tuzaklarından birine ve birkaç akrabasına hoş geldin. Shader stripping. Yapı alırken Unity görünüşte gerekmeyen her şeyi atar; shader'lar da dahil. Sorun şu: shader'ları çalışma anında Shader.Find() ile yüklüyorsan (su, atmosfer, hologramlar ve daha fazlası için 20'den fazla özel shader'ımızda yaptığımız gibi), Unity hiçbir sahnede onlara bir referans gö
Marcel Dütscher
27 Haz1 dakikada okunur
Voksel dünyasında ışık: Gerçek ışıklar mı, flood fill mi?
Bir oyuncu üssüne bir parıltı lambası koyuyor. Teknik olarak ne oluyor? Bu masum soru bizim için temel bir karar doğurdu; cevabı da “daha modern” çözümün her zaman daha iyi olmadığının güzel bir örneği. Seçenek A: gerçek Unity ışıkları. Parlayan her blok bir nokta ışık kaynağı olur, motor her şeyi hesaplar. Harika görünür ama ölçeklenmez. Bir voksel dünyasında görüş alanında yüzlerce parlayan blok olabilir; bu kadar çok gerçek zamanlı nokta ışığı her GPU'yu terletir, tarayıcı
Marcel Dütscher
27 Haz1 dakikada okunur
%100 yapay zekâ yapımı: Unity 6, .NET 8 ve Python ile iş akışımız
En sık aldığımız sorulardan biri: Karmaşık bir çok oyunculu voksel oyununu tamamen yapay zekâyla nasıl yaparsınız? Kısa cevap: Çok katı kurallarla. Yapay zekâ kod yazmada harika, ama mimari bakış açısını çabuk kaybediyor. Bu yüzden ilk günden katı bir istemci/sunucu mimarisi dayattım. Teknoloji yığınımıza bir bakış: İstemci: Render, girdi ve voksel mesh oluşturma için Unity 6. Sunucu: Parça (chunk) üretimi ve sunucu otoriteli UDP ağı için .NET 8 Dedicated Server. Mantık ve ko
Marcel Dütscher
26 Haz1 dakikada okunur
Grafik yenilemesi: Motor değiştirmeden daha fazla görünüm
Bir noktada dürüst teşhis masadaydı: oyun iyi oynanıyordu ama bir prototip gibi görünüyordu. Başka bir render hattına, hatta başka bir motora göz dikmek yerine kendimize tek bir soru sorduk: Unity'nin URP'sini gerçekten sınırlarına kadar zorlarsan içinde hâlâ ne kadar görünüm saklı? Cevap: şaşırtıcı derecede çok. Kenar yumuşatma (SMAA). Blok dünyaları kenarlardan oluşur; titreyen kenarlar her ekran görüntüsünü mahveder. SMAA görüntüyü bulanıklaştırmadan onları yumuşatır. Orta
Marcel Dütscher
26 Haz1 dakikada okunur
MIT'den AGPL'ye: Lisansı neden değiştirdik
Blocks Beyond The Stars açık kaynak; en başından beri öyle. Ama hangi lisansla olduğunu yol boyunca köklü biçimde değiştirdik: izin verici MIT lisansından AGPL-3.0'a. İşte nedeni. MIT ne anlama gelirdi: MIT ile herkes kodumuzu alabilir, değiştirebilir ve karşılığında hiçbir şey vermeden kapalı bir ürün olarak yeniden satabilir. Kütüphaneler için bu çoğu zaman tam olarak doğrudur. Sunucuları olan komple bir oyun için yanlış geldi: biri emeğimizi alıp ondan ticari bir sunucu hi
Marcel Dütscher
25 Haz1 dakikada okunur
Varlık hattında yapay zekâ dokuları ve yapay zekâ sesleri
Blocks Beyond The Stars'ın grafik sanatçısı da ses tasarımcısı da yok. Yine de her yeni blok kendi dokusunu, her yeni özellik kendi sesini alıyor. Bunun için aracımız üretken yapay zekâ; etrafında da net bir iş akışı var. Dokular. Yeni blok karoları OpenAI görsel modelleriyle oluşturuluyor. Komut malzemeyi, stili ve oyunun voksel estetiğini anlatıyor; sonuç karo boyutuna indirilip blok atlasımıza yerleştiriliyor; her blok türünün sabit bir karosu olduğu tek büyük bir doku bu.
Marcel Dütscher
23 Haz1 dakikada okunur
bottom of page