Oyun Yapımı : 2D oyun yardım

2D oyun yardım
cyberlogCyber LogAvatar

Merhaba ustalar,

ben çok yeniyim.c++ bilgim yok.grafikte.bundan 6 yıl önce ilk programlamaya başladığımdada oyun yazmak istemiştim.o zamanlar hazirnet adıyla cs 1.6 için yüzlerce map yapmıştım.cs için yama paketi oluşturmuştum.

http://maps.cs-bg.info/maps/cs/1119/
http://www.cstrike-planet.com/maps/1864-cs_officehazirnet
bunlar o yıllarda yaptığım maplerimdi.

3d oyun yazamam bu nedenle geçenlerde gezginler.nette bir oyunla karşılaştım.

http://www.gezginler.net/indir/zombie-shooter.html

oyunlar genelde port ile sunucuya bağlantılı gerçekleşir.metin2 de öğledir.knighttada.ben bu port olayını php ile bağlantılı bir konuma getireceğim.vb6 ile yazmayı ve xml http ile php veritabanlı bir yazılım düşünüyorum.

bilirsiniz age of empires 2 deki gibi ,legend online daki gibi iki boyutlu bir yazılım lwl exp ilerlemeli yapılabilirmi?

veritabanı kullanıcı,şifre(md5),xkoordinatı,ykoordinatı,2,5,45,3

bu şekilde olacak ve en önemlisi koordinat sistemi çünkü harita büyük ve kullanıcı belirli alanda belirli kişileri göreceğinden .oyun sürekli koordinat sorgulaması yapacak ve kişinin koordinatına yakın kişiler ekranda yazdırılacak.tabi fikir aşamasındayım tamamlamam için hertürlü kaynak var.başlamadan önce siz ustalarıma sormak isterim bu doğru yolmudur.yapılabilir mi?.


2014-06-03 15:01:03
  • Offline
  • Erkek
Zombie Shooter
turkertTürker TunalıAvatar

Bahsettiğin Zombie Shooter oyunun resimlerine baktım. O tarz oyunları bende çok severim. Maalesef "Lara Croft and the Guardian of Light", Shadowgrounds, Crimsonland bitirdikten sonra boş kaldık biraz. Mesela Alien Shooter düzgün bir oyun hissi hiç verememişti. Neyse konumuza geçelim.

Online oyun için daha doğrusu her türlü ağ oyunu için şunu unutmamak lazım oyuncunun belirli bilgilerini devamlı sunucu ile paylaşmak ve sunucudan güncel verileri alman lazım. Mesela oyuncunun konum bilgisi double tipinde x,y,z olarak tutarsak VB6 double (8 byte) 24 byte tutar. Buna yüzünün ne tarafa baktığı, kullandığı silah, animasyon durumu (yürüme, koşma, zıplama), sağlık/enerji durumu gibi verileri eklersek 30 byte diyelim. Aksiyon oyunu olduğu için 60 FPS hedeflesek saniyede 60*30 = 1800 byte sadece bir karakter için gerekli olan bant genişliğini verdi. Bunun üstüne php, mysql gibi sunucu tarafında yapılacak işlemleri de eklersen oyuncu sayısı ve sunucu yükü ile birlikte oynanabilir bir oyun yapmak çok zaman gerektirecektir. Çok optimizasyon gerektirir. Sadece online değil aynı ağda bile bu işi bu alt yapı ile halletmen biraz zaman alabilir.

Burada optimizasyon işlerine girebilir yada bu iş için hazır kütüphane ve servislere yönelebilirsin. Mesela Unity için aynı anda 100 oyuncuya kadar ücretsiz destek veren sunucu ve kütüphaneler var. Ancak VB6 ile direk kullanabileceğin bir kütüphane bulman zor olabilir.

Eğer bu işte asıl amacın online oyun üstüne programlama bilgini geliştirmek ise senin yerinde olsam optimizasyonları araştırır ve kendi çözümümü geliştiririm. Hem sunucu hem istemci tarafında kendi çözümünü geliştirmen sana çok şey katar.

Optimizasyon için ilk olarak double yerine haritaya daha düzgün kendi veritipini kullanman, verileri oyunun her döngüsünde değil sadece belirli durumlarda alıp göndermen, diğer oyuncuların bilgisini de devamlı alman değil genelde tahmin etmen (ileri tuşuna basıyorsa büyük ihtimal ilerliyordur gibi, bu yöntem işlemcilerde de çok kullanılır) gibi. PHP ile başlayabilirsin ama direk soket iletişimine geçmen gerekir. Eğer sıra tabanlı bir oyun olsa PHP/MySQL yeterli olurdu. Veritabanı olarak in-memory bir veritabanı kullanman gerekli.

Veri alıp göndermek bu tarz oyunlar için zaman alıcı bir işlemdir, düzgün zamanda gerekli tüm veriler ile yapmak gerekli.


Türker TUNALI
2014-06-04 11:03:16
  • Offline
  • Erkek

Kapalı

Topic closed automatically because it`s been more than a year!