Merhaba arkadaşlar,
Unreal Engine 5.8 ile geliştirdiğimiz ve detaylarına aşağıdaki bağlantıdan ulaşabileceğiniz projemizi tamamlamış bulunuyoruz. İsteyen herkes, hem sunucu (
) hem de istemci () tarafını kendi ihtiyaçlarına göre dilediği gibi düzenleyebilir. Proje bünyesinde onlarca editör, importer ve exporter ile özellikle yeni başlayan geliştiricilere büyük fayda sağlayacağını düşünüyorum. Projeyi dilerseniz mobil platformlar için, dilerseniz Windows/Mac/Linux ortamında derleyip çalıştırabilirsiniz.Çalışma süreci:
Sıfırdan yeniden geliştirilen istemci ve bu istemciyle tam uyumlu olacak biçimde platformlar arası (cross-platform) mimariyle baştan yazılmış bir sunucu. Veritabanı altyapısı, cross-platform uyumluluğunu sağlamak amacıyla PostgreSQL kullanıldı. Geriye dönük olarak 24xx sunucularla da uyumlu çalışacak şekilde tasarlanmıştır; istemci bu sunuculara sorunsuz bağlanabilir, hatta doğrudan orijinal U*KO sunucusuna giriş yapabilirsiniz. Kısacası sunucuyu ister Windows ister Linux işletim sistemlerinde rahatlıkla çalıştırabilirsiniz.
Tüm görsel/işitsel materyaller (asset) ve binlerce dokümantasyon dahil Git deposu bağlantısı aşağıdadır (yaklaşık 30 GB). U*KO ve KO*EKO'ya ait tüm etkinlikler (events) ve eşyalar (items) projede eksiksiz yer almaktadır.
1.9 GB kod ve dökümantasyon 30 GB Asset mevcut. İsterseniz sadece kod çekerek asseti daha sonra kendinizde tamamlayabilirsiniz.
Yıllardır severek oynadığımız oyuna bir nebze de olsa güncelleme ve modern endüstri standardı kazandırmak istedik. Projede mevcut özellikleriyle, grafik, socket sistemi, paket kripto seviyesi modernize edildi muhtemelen bir çok ücretli versiyonda bulamayacağınız standarta getirildi. Sunucu tarafındaki tüm kodlar, görev sistemleri (quests) dahil olmak üzere 5.000'den fazla test ile denetlenmiştir; tüm
dosyaları tek tek incelenmiştir. %90 herşey dökümante edilmiş durumda.Dilediğiniz gibi geliştirip genişletmeniz ve optimize etmeniz dileğiyle.
Deneyenlerden ve geliştirenlerden birer görsel alırız
HDKO Derleme ve Çalıştırma Kılavuzu (Sunucu + Client)
Önce bilinmesi gereken üç şey:
- Depoyla gelen development.json ile client bağlanamaz. O dosyada TCP var ve kripto kapalı. Client ise her zaman WebSocket ve HDKOCrypt kullanıyor. Bu yüzden local.json dosyasını elle oluşturmanız gerekiyor (6. adım).
- Yedekler .sql uzantılı ama düz SQL değil. pg_dump custom formatındalar ve PostgreSQL 18.4 ile alınmışlar. psql -f ile açılmazlar, pg_restore 18 gerekir.
- Sunucu kripto anahtarı depoda yok. Anahtar dosyası elinizde yoksa yeni bir çift üretip iki tarafa da yapıştırmanız gerekir.
1. Ön gereksinimler
Her iki taraf için:
- Windows 10/11 x64
- Git ve Git LFS. Content klasörü LFS'te. LFS kurulu değilken klonlarsanız .uasset dosyaları yalnızca işaretçi olarak iner ve proje açılmaz.
- Visual Studio 2022 (17.8+) veya VS 2026
- İş yükleri: "Desktop development with C++" ve "Game development with C++"
- Bileşenler: MSVC x64, Windows SDK, "C++ CMake tools" (CMake ve Ninja buradan gelir), .NET
- Python 3.10+, PATH'te olmalı. build.bat derlemeden önce audit scriptleri çalıştırıyor; Python yoksa build başarısız olur.
Sadece sunucu için:
- vcpkg: git clone C:\vcpkg, ardından bootstrap-vcpkg.bat. Bağımlılıkları ilk derlemede kendisi kurar.
- PostgreSQL 18
- psqlODBC x64: ODBC sürücü listesinde adı tam olarak "PostgreSQL Unicode(x64)" görünmeli.
- Node.js 20+: isteğe bağlı, yalnızca dashboard için.
Sadece client için:
- Unreal Engine 5.8
- 300 GB'tan fazla boş disk
- DX12 / SM6 destekli ekran kartı
2. Kaynağı indirme
git lfs install
git clone <repo-url> HDKO
cd HDKO
git lfs pull3. Veritabanı
- PostgreSQL 18'i kurun. postgres kullanıcısına bir şifre verin (örnek: hdko2026), port 5432 kalsın.
- psqlODBC x64'ü kurun.
- Veritabanını oluşturup yedeği geri yükleyin:
set PGPASSWORD=hdko2026
createdb -U postgres HDKO_DATABASE_SERVER_001
pg_restore -U postgres -d HDKO_DATABASE_SERVER_001 --no-owner "Server\DatabaseBackup\05.10.2026-clean.sql"Üç yedek dosyası var:
- 05.10.2026-clean.sql: 237 canlı tablo. Bunu kullanın.
- 2026-10-05-dropped.sql: 285 ölü tablo.
- 05.10.2026.sql: ikisinin toplamı, 522 tablo.
Yedekler 05.10.2026 tarihli. Sunucu "eksik tablo/kolon" diyerek açılmazsa sonradan eklenmiş bir migrationsql/README.md dosyasına bakın.
Oyun hesabı: AUTO_REGISTER varsayılan olarak açık. İlk girişte yazdığınız ID ve şifreyle hesap otomatik açılır.
4. Kripto anahtarları (iki tarafta eşleşmeli)
- Client tarafı: Source/HDKO/Security/HDKOCryptKeys.cpp. Git'te duruyor; sabitlenmiş public key burada.
- Sunucu tarafı: Server/core/crypto/HDKOCryptServerKeys.h. Git'te yok, gizli seed burada. Şablonu .example dosyası; içi sıfırlarla dolu olduğu için hiçbir bağlantıyı kabul etmez.
Elinizde sunucu anahtar dosyası (HDKOCryptServerKeys.h) varsa onu kopyalamanız yeterli. Yoksa yeni bir çift üretin:
- "x64 Native Tools Command Prompt" içinde çalıştırın:
cd Tools\hdkocrypt_keygen
build.bat > keys.txt- CLIENT bloğunu HDKOCryptKeys.cpp dosyasına yapıştırın.
- SERVER bloğunu Server/core/crypto/HDKOCryptServerKeys.h dosyasına yapıştırın. Çıktıda "shared/..." yolu yazıyor ama o yol eski.
- keys.txt dosyasını silin.
5. Sunucuyu derleme
Server/build.bat içindeki iki satırı kendi makinenize göre düzeltin:
set "VCPKG_ROOT=C:\vcpkg"
cd /d "C:\Users\<siz>\Documents\Unreal Projects\HDKO\Server"cd Server
build.bat- Sırasıyla audit kontrolleri, cmake configure (ilk sefer uzun sürer), 8 paralel işle derleme ve Server/release klasörüne kurulum yapar.
- Son satır BUILD_ALL_OK ise derleme başarılıdır.
- Derleme hata mesajı vermeden kesilirse bellek yetmemiştir: set HDKO_BUILD_JOBS=4 yapıp Unreal editörünü kapatın.
6. Sunucu config'i
Start.bat, config\local.json dosyasını kullanıyor. Bu dosya git'te yok, kendiniz oluşturacaksınız:
- development.json dosyasını local.json adıyla kopyalayın.
- Aşağıdaki değerleri değiştirin.
- admin.bindAddress değeri 127.0.0.1 olarak kalsın. 9130 portunu asla dışarı açmayın.
- Dosyayı Server/release/config klasörüne kopyalayın ya da build.bat'i tekrar çalıştırın.
local.json içinde değiştirilecek değerler:
- crypto.enabled → true
- login.net.transport ve game.net.transport → "WS"
- login.net.bindAddress ve game.net.bindAddress → "0.0.0.0"
- login.net.port → 15100
- game.net.port → 15572
- serverList[0].lanIp ve serverIp → "192.168.1.100" (client'a bildirilen oyun sunucusu adresi)
- serverList[0].gamePort → 15572
- .driver → "PostgreSQL Unicode(x64)"
Şifreler JSON'a değil, ortam değişkenlerine yazılır:
- HDKO_PG_PASSWORD → Veritabanı şifresi. Start.bat bunu hdko2026 olarak kendisi set ediyor; şifreniz farklıysa o satırı düzeltin.
- HDKO_ADMIN_TOKEN → Admin API ve dashboard
- HDKO_OPENROUTER_KEY → Bot sohbeti, isteğe bağlı
7. Sunucuyu başlatma
cd Server\release
scripts\Start.batKontrol listesi:
- Konsollarda "error" satırı olmamalı.
- curl localhost:9130/health cevap vermeli.
- Client başka bir PC'deyse güvenlik duvarında TCP 15100 ve 15572 gelen bağlantılara açık olmalı.
Dashboard (isteğe bağlı):
- dashboard.bat içindeki DASH yolunu düzeltin.
- .env.example dosyasını .env olarak kopyalayın.
- dashboard.bat'i çalıştırıp adresini açın. İlk giren kullanıcı owner olur.
8. Client ayarları
- Source/HDKO/Defs/HDKOBuildConfig.h: HDKO_OFFICIAL_SERVERS 0 olmalı. 1 olursa resmi KO sunucusun
- Source/HDKO/Security/HDKONetSecrets.h:HDKO_DEFAULT_LOGIN_HOST satırına sunucu IP'sini yazın ("192.168.1.100"), port 15100 kalsın.
- Editörde HDKO_DEV_LOCAL = 1 olur. Paketlenmiş build'lerin hepsinde 0 olur ve client production'a (wss://login.hd-ko.com:2053) gider.
- Paket build'in LAN sunucusuna gitmesi için dosyanın başındaki //#define HDKO_DEV_LOCAL 1 satırının yorumunu kaldırın. Release öncesi geri alın.
- Oyun sunucusunun IP'si ve portu client'ta yazmıyor; login sunucusunun server listesinden gelir.
- HDKOCryptKeys.cpp: sunucunun seed'iyle eşleşen anahtar burada olmalı (4. adım).
9. Client'ı derleme ve çalıştırma
- HDKO.uproject dosyasına sağ tıklayıp "Generate Visual Studio project files" seçin.
- HDKO.sln'yi açın, Development Editor | Win64 seçip derleyin. Alternatif olarak uproject'e çift
- Editör IntroScreen haritasıyla açılır. İlk açılışta shader derlemesi uzun sürer.
- Play'e basın, yeni bir ID ve şifreyle girin (hesap otomatik açılır), sunucuyu seçin, karakter oluşturun.
Paket build almak için:
"C:\Program Files\Epic Games\UE_5.8\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -project="C:\Users\<siz>\Documents\Unreal Projects\HDKO\HDKO.uproject" -build -cook -stage -clientconfig=Development -iterate -nopak -noiotstore10. Örnek senaryo: biri sunucu, biri client iki PC
Sunucu PC (192.168.1.100):
- PostgreSQL + ODBC kurup 05.10.2026-clean.sql yedeğini geri yükleyin.
- Sunucu anahtarını yerine koyun.
- build.bat yollarını düzeltip BUILD_ALL_OK görene kadar derleyin.
- local.json'u oluşturun (WS, kripto açık, 0.0.0.0, serverIp=192.168.1.100).
- Güvenlik duvarında 15100 ve 15572 portlarını açın.
- Start.bat'i çalıştırın.
Client PC:
- UE 5.8 + VS kurun, depoyu LFS ile klonlayın.
- HDKO_OFFICIAL_SERVERS 0, LOGIN_HOST="192.168.1.100" ayarlayın; anahtar sunucuyla eşleşsin.
- Development Editor ile derleyin, Play'e basın.
Tek PC'de de aynı adımlar geçerli; IP olarak her yerde 127.0.0.1 kullanın.
11. Sık karşılaşılan sorunlar
- Bağlanıyor, hemen kopuyor → Kripto anahtarları uyuşmuyor ya da sunucuda crypto=false / TCP ayar
- Login çalışıyor, sunucuya girişte takılıyor → serverIp / gamePort yanlış veya 15572 portu kapalı.
- Sunucu açılışta ODBC hatasıyla kapanıyor → Sürücü kurulu değil ya da adı config'teki adla aynı
- Sunucu açılışta "password authentication failed" diyor → HDKO_PG_PASSWORD set edilmemiş veya yanlış.
- pg_restore sürüm hatası veriyor → pg_restore sürümü 18'den eski.
- Binlerce "Cannot open include" hatası → VS ortamı yüklenmemiş. Eski build_target.bat'i kullanmayın.
- .uasset dosyaları birkaç yüz bayt, proje açılmıyor → LFS kurulmadan klonlanmış. git lfs install ve git lfs pull çalıştırın.
Yasal Uyarı ve Hak Bildirimi (Disclaimer)
Bu proje; eğitim, pratik ve portföy geliştirme amacıyla hazırlanmış, kâr amacı gütmeyen, hayran yapımı (fan-made) bir çalışmadır.- Fikri Mülkiyet: Oyuna ait tüm konsept, karakterler, görseller, ses efektleri, müzikler ve ticari markalar orijinal hak sahibine aittir. Bu unsurlar üzerinde hiçbir hak veya mülkiyet iddia edilmemektedir.
- Kullanım Amacı: Bu depo (repository) ve içindeki kaynak kodları yalnızca yazılım mimarisi, oyun mekanikleri ve programlama pratiklerini sergilemek üzere paylaşılmıştır. Projeden doğrudan veya dolaylı hiçbir maddi kazanç/gelir elde edilmemektedir.
- Kaldırma Talebi: Telif veya hak sahiplerinin projeyle ilgili herhangi bir itirazı ya da talebi olması halinde, bildirim yapıldığı anda proje ve tüm kaynak kodları derhal yayından kaldırılacaktır.