Giriş
Uzun süredir üzerinde çalışıp geliştirdiğim maksadımın ilk başta node.js'de soket programlamayı anlamak olup sonradan sonraya hobi haline gelen Astromeda kod isimli uzay oyunumu sizlere tanıtmak ve kodlarını açık kaynak bir şekilde paylaşmak isterim.Projeyi geliştirmeyi durduruyorum çünkü her teknoloji öğrenmek istediğimde bir proje geliştirmek tonla yarım ve tamamlanmamış proje haline geliyor ve zamanla bana yük oluyor. (Sanki onları geliştirmeye hala mecburmuşum gibi hissediyorum.)
Oyunu yaparken Astroid (80'lerin atari oyunu) + darkorbit (bigpointin efsanesi)'den esinlenerek hareket ettim. Astroidleri vurarak veya çatışarak para kazan ve ilerle.
Backend (Sunucu Tarafı)
Buşekilde oyuncu hareketleri, lazer atışları, skor güncellemeleri ve canlı oyun durumu anlık olarak tüm istemcilere iletmeyi hedefledim.
Veri tabanı için mssql kullanıyorum (en son galiba yarım bırakmıştım yada kısmen bağlamıştım)
Bu yapı; kullanıcılar, gemiler, envanter, haritalar, NPC ilişkileri gibi oyun verilerinin düzenli ve genişletilebilir bir şekilde yönetilmesini sağlıyor.
Oyundaki gemi, npc, lazer, pet gibi bir çok şeyi db'den alıp oyun kodlarını kısmen değiştirmeden geliştirilebilir içerik eklenebilir bir yapı hedeflemiştim [Baya zormuş
Frontend (Arayüz ve oyun çizimleri için)
Oyunu canvas üzerinde render ediyorum. draw.js game.js hud.js store.js gibi modüller ile arayüz cizimlerini halletmeye çalıştım [Baya bir korsan oldu çünkü ilk node.js ve bu denli web deneyimim]Teknik altyapı
Güvenlik ve oturum
Kullanıcı doğrulama kayıt ve giriş ekranları yaptım son çalışmalarımda onları çalıştıramadım [Artık ben projeyi değil proje beni yönetiyordu. Sanki mecburmuşum mevzuatı].Sıkıldığım için burada kestim muhtemel yarım kaldı.
Oyun içeriği
Şu anda tek tip astroid var.Haritalara özel npc ve bosslar.
2 Tane harita.
En son canvas'la çizdirememiştim ama etrafta çok kısa kalan hazineler var (Üzerlerine giderseniz alınabiliyor minimap'tan görebilirsiniz.)
Multiplayer yapı lokalde kurup 2 3 5 10 keyfinize bağlı kişiyle oynayabilirsiniz.
Chat koydum olmazsa olmazımız
Gemiler ve özel skilleri var.
Roket ateşleyici var (Savaşta baya iş yapıyor
Market.
Farklı lazerler.
WASD ile gemi yönlendirme, mouse ile nişan alma (Normalde WASD ile geminin burnunu yönlendiriyorduk sonra böyle denedim ve fenasal akıcı.)
Uranyum (oyun parası) ve xp kazanımı.
Haritanın dışına gidilebilir oralara npc'ler gelemez.
Belirli yerlerde map değiştirmek için kapılar var.
En son birde rastgele yerlere ışınlayan çk nadir gözüken kara delik yapmıştım
Db ayarlarını yapmayı unutmayın bir mssql db'si oluşturun ve db.js dosyasında gerekli bilgileri doldurun.
Kısmende olsa dinamik bir içerik eklemek isterseniz veritabanına gidin ve yeni gemiyi varsayılan şablonlara bakarak ekleyin [Gemi,lazer,npc,map gibi bir çoğu dinamik olarak db'den geliyor.].
Oyunu başlatmak için indirip klasöre giriniz.
O pencerede bir powershell başlatın ve
node app.js yazınız localhost:3000'de oyun başlayacaktır
yada daha kısayol Visual Studio ile projeyi açın ve Launch Program diyin.
Oyundan kareler
Bir NPC ile çatışırken
Envanter için hazırladığım sistem ve gemi yönetimi (malessef yarım kaldı)
Node.js sunucusu ayaklanınca çıktılar
Son düzenleme:





