ISTANBUL TECHNICAL UNIVERSITY FACULTY OF COMPUTER AND INFORMATICS. Implementing a Multiplayer 3D Game with AI Capabilities



Benzer belgeler
Yüz Tanımaya Dayalı Uygulamalar. (Özet)

DESINING AND IMPLEMENTING 3D, MULTIPLAYER AND REAL TIME COMPUTER GAME (SUMMARY)

KONTAKSĐ. Bitirme Ödevi. Metin Kaplan Ferhat Karakoç Bölüm : Bilgisayar Mühendisliği Anabilim Dalı: Bilgisayar Bilimleri

İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK FAKÜLTESİ DUYARGA AĞLARINDA HABERLEŞME ALGORİTMASI TASARIMI VE TINYOS ÜZERİNDE GERÇEKLEMESİ

.com. Kurumsal Java. Özcan Acar com

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

Dersin Türü (Course Type) Zorunlu (Compulsory)[Χ] Seçmeli (Elective) [ ]

İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK FAKÜLTESİ ULAŞIM ROTASI BELİRLEME YARDIMCISI

Argumentative Essay Nasıl Yazılır?

Akılda kalıcı sahneler

Mobil Cihazlarda RTMFP Protokolü ile P2P Görüntü İletimi

Bilgi güvenliği konusunda farkındalık yaratmak. Mobil cihazlardaki riskleri anlatmak. Mobil uygulamaların bilgi güvenliği açısından incelemek 2

Sasmazer Endüstriyel Ürünler ve Ambalaj Paz. San. Tic.

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK FAKÜLTESİ. AKILLI FİYAT ARAMA MOTORU TiLQi.NET

A UNIFIED APPROACH IN GPS ACCURACY DETERMINATION STUDIES

Automatically Upgrade (new) Client push installation Software update point installation Group Policy installation Logon script installation

ANKARA ÜNİVERSİTESİ A ÖĞRENCİ İŞLERİ DAİRE BAŞKANLIĞI

Dicle Üniversitesi Bilgi İşlem Online Talep Takip Sistemi

İSTANBUL TEKNİK ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM FAKÜLTESİ LİNUX ÜZERİNDE ÇOKLU PROTOKOL ETİKET ANAHTARLAMANIN GERÇEKLENMESİ

DETERMINATION OF VELOCITY FIELD AND STRAIN ACCUMULATION OF DENSIFICATION NETWORK IN MARMARA REGION

Gezgin Etmen Sistemlerinin Başarım Ölçümü: Benzetim Tekniği

THE IMPACT OF AUTONOMOUS LEARNING ON GRADUATE STUDENTS PROFICIENCY LEVEL IN FOREIGN LANGUAGE LEARNING ABSTRACT

CmpE 320 Spring 2008 Project #2 Evaluation Criteria

Rapor Hazırlama Kuralları

İSTANBUL TEKNİK ÜNİVERSİTESİ ELEKTRİK-ELEKTRONİK FAKÜLTESİ GENOPE

Huawei Enterprise A Better Way.

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

WINDOWS SERVER 2008 R2 REMOTE DESKTOP SERVICES RD Connection Broker

MÜHENDİSLİK FAKÜLTESİ / ENSTİTÜSÜ / YÜKSEKOKULU BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ BÖLÜMÜ /ABD LİSANS PROGRAMI - 2 ( yılı öncesinde birinci

ANKARA ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Görünümler ve Ötesi Yaklaşımıyla Radar Yazılım Mimarisi Dokümantasyonu Tecrübeleri. Ali Özzeybek M. Devrim Tokcan Murat Tuncer

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

ve Sonrası Girişli Öğrenciler için Uygulanacak Ders Program

Unlike analytical solutions, numerical methods have an error range. In addition to this

Mobil Cihazlardan Web Servis Sunumu

Network IP Çözümleri Digital Signage

Kaspersky Open Space Security: Release 2. İşletmeniz için birinci sınıf bir BT güvenliği çözümü

CİSCO ANY CONNECT UYGULAMASI İLE İÇ KAYNAKLARA ERİŞİMİ KLAVUZU

Network IP Çözümleri Digital Signage

Bulanık Mantık Tabanlı Uçak Modeli Tespiti

Fırat Üniversitesi Personel Otomasyonu

e-tartı LTR3 Firmware Upgrade Yazılım Güncelleme Moduler Connection LTR3 Firmware Upgrade / LTR3 Yazılım Güncelleme v1.0.

NFS (Network File System) & NIS (Network Information System) H. Coşkun Gündüz cgunduz@cs.bilgi.edu.tr

FIRAT ÜNİVERSİTESİ PERSONEL OTOMASYONU

YÖNETİM BİLİŞİM SİSTEMLERİ BÖLÜMÜ YENİ DERS MÜFREDATI (1) FAKÜLTESİ: İŞLETME FAKÜLTESİ / BUSINESS SCHOOL

Dr. Aysın Yeltekin. EST Enerji

Hüseyin ÇIRAL

T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ ISPARTA İLİ KİRAZ İHRACATININ ANALİZİ

WEEK 4 BLM323 NUMERIC ANALYSIS. Okt. Yasin ORTAKCI.

LED AYDINLATMA SİSTEMLERİ LED LIGHTING SYSTEMS

Hazırlayanlar Oben Işık( ), Gökhan Karaca( ) İTÜ Bilgisayar Mühendisliği Bitirme Projesi. Kuramsal Bilgiler

18. Esri Kullanıcıları Konferansı 7-8 Ekim 2013 ODTÜ, Ankara Teknik Atölye. ArcGIS for Mobile. Kürşad Demirer

4. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

Clear omegle ban on puffin

Red Hat Server Hardening

Seri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME - NT4 bağlantısına çok benzer.

ArcGIS Online ve Portal for ArcGIS

SolarBaba2015: Solar Energy Conference GÜNEŞ ÖLÇÜM ⁹Ü NEDİR? NEDEN / NASIL YAPILIR? İSKENDER KÖKEY, MSc Country Manager, Turkey

ANKARA ÜNİVERSİTESİ A ÖĞRENCİ İŞLERİ DAİRE BAŞKANLIĞI

EGE UNIVERSITY ELECTRICAL AND ELECTRONICS ENGINEERING COMMUNICATION SYSTEM LABORATORY

Gezici Tanıtım & Fuar Araçları Mobile Showroom & Fair Vehicles

OPNET IT Guru- Network Design (Ağ Tasarımı)

Önce domain sunucuyu görebiliyor muyuz, kontrol edelim

Sunucu Taraflı JavaScript ile Gerçek Zamanlı Web Uygulamaları Geliştirme

T.C. İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ BİLİMSEL ARAŞTIRMA PROJELERİ KOORDİNASYON BİRİMİ

First Stage of an Automated Content-Based Citation Analysis Study: Detection of Citation Sentences

Derece Alan Üniversite Yıl Lisans Hidrodinamik, Gemi Model İstanbul Teknik Üniversitesi

Akıllı Satranç Uygulaması HAZIRLAYAN: BERKAY ATAMAN DANIŞMAN: DOÇ. DR. FEZA BUZLUCA

Smart Cascade 120 Kw

BİLGİ TEKNOLOJİSİ ALTYAPISI. Mustafa Çetinkaya

CEP TELEFONU ĐLE SĐSTEMĐN UZAKTAN KONTROLÜ REMOTE CONTROL SYSTEM WĐTH MOBĐLE PHONE

BEUN VPN Hizmeti. VPN Nedir?

İSTANBUL TEKNİK ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM FAKÜLTESİ MOBİL UYGULAMA İLE FATURA ÖDEME

ANKARA ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ DÖNEM PROJESİ TAŞINMAZ DEĞERLEMEDE HEDONİK REGRESYON ÇÖZÜMLEMESİ. Duygu ÖZÇALIK

BAŞKENT ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ BENZER SÜREÇLERDE ÜRETİLEN ÜRÜNLER İÇİN YAPAY ZEKA İLE ZAMAN TAHMİNİ SONER ŞÜKRÜ ALTIN

SOFTWARE ENGINEERS EDUCATION SOFTWARE REQUIREMENTS/ INSPECTION RESEARCH FINANCIAL INFORMATION SYSTEMS DISASTER MANAGEMENT INFORMATION SYSTEMS

T.C. Hitit Üniversitesi. Sosyal Bilimler Enstitüsü. İşletme Anabilim Dalı

Bilgisayar Mühendisliği Bölümü Lisans Ders Programı / Computer Engineering Undergraduate Curriculum

Bilgi Teknolojisi Altyapısı. Tarihi Gelişim. Tarihi Gelişim. Bulut Servis Sağlayıcı. Bulut Bilişim

BİLGİ TEKNOLOJİSİ ALTYAPISI. Mustafa Çetinkaya

Sınavında sık yapılan temel hatalar:

CENG 302 Yazılım Mühendisliği Yazılım Mimarisi - Devam. Alper UĞUR

08224 Sunucu İşletim Sistemleri

01 WASTE Windows Linux ve macos (Sınırlı İşlevsellik)


Server Operating System

ANADOLU ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI DOKTORA YETERLİK SINAVI OCAK 2017

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Bu kılavuzda DS Manager ile, NP311 Serial to Ethernet dönüştürücünün kurulum ve konfigürasyonuna ilişkin pratik bilgiler bulunmaktadır.

Konforun Üç Bilinmeyenli Denklemi 2016


TÜRKSAT UYDU HABERLEŞME KABLO TV VE İŞLETME A.Ş. İŞÇİ STATÜSÜNDE PERSONEL ALIM İLANI (Bilişim Hizmetleri)

COURSES OFFERED FOR ERASMUS INCOMING STUDENTS

MATEMATİK BÖLÜMÜ BÖLÜM KODU:3201

Farklı Mobil Platformlar Üzerinde Servis Tabanlı Mimari(SOA) Yaklaşımı: Elektronik Uçuş Çantası Vaka Çalışması

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI DERS KATALOĞU

Turkish Vessel Monitoring System. Turkish VMS

STRAIGHT. Correct address for linear lighting: STRAIGHT

THE DESIGN AND USE OF CONTINUOUS GNSS REFERENCE NETWORKS. by Özgür Avcı B.S., Istanbul Technical University, 2003

Transkript:

ISTANBUL TECHNICAL UNIVERSITY FACULTY OF COMPUTER AND INFORMATICS Implementing a Multiplayer 3D Game with AI Capabilities Erdem Emekligil 150110702 Burak Muhammed Göncü 040100961 04.06.2014 Faculty: Computer and Informatics Department: Computer Engineering Supervisor: Assoc. Prof. Dr. Feza Buzluca July 2014

I Özgünlük Bildirisi 1. Bu çalışmada, başka kaynaklardan yapılan tüm alıntıların, ilgili kaynaklar referans gösterilerek açıkça belirtildiğini, 2. Alıntılar dışındaki bölümlerin, özellikle projenin ana konusunu oluşturan teorik çalışmaların ve yazılım/donanımın benim tarafımdan yapıldığını bildiririm. İstanbul, 2014 Erdem Emekligil Burak Göncü

II ÖNSÖZ Bize bu çalışmamız sırasında yol gösteren, danışmanımız Sayın Doç. Dr. Feza BUZLUCA'ya, çalışmamız boyunca bize destek olan ailelerimiz, hocalarımız ve arkadaşlarımıza teşekkürlerimizi sunarız.

III IMPLEMENTING A MULTIPLAYER 3D GAME WITH AI CAPABILITIES (SUMMARY) In this project we tried to implement a 3D multiplayer game which features Real Time Strategy and Space Simulation elements in it. Because the game contains real time strategy features in it, it is necessary to support several player ships and their projectiles in the game. Thus two quality criterias arise which are as follows; Frame Per Second (FPS) Latency (must be below 80-100 milliseconds in multiplayer games) To keep the FPS as high as possible we must create efficient and lightweight algorithms and keep the polygon count of the scene objects as low as possible without sacrificing any quality. For the algorithm part, we tried to implement a lightweight and efficient AI system which is memory and CPU friendly and is also has a highly modular behavior system which enables the behaviors of the ships to be able to change according to the needs of the software. Instead of using AI algorithms such as A* we implemented more efficient algorithms that have a lower complexity than A*. For the multiplayer functionalities we used a authoritative P2P (Peer to Peer) system which uses the server a central communication hub. For the stability of the multiplayer experience we used TCP socket connections because the TCP protocol provides an error tolerant connection. Because of that the multiplayer system will contain fewer errors while interpolating the positions of the ships. At the other hand the socket connection provides a fast way to communicate between the clients (peers) and the server. The clients communicate at the beginning of the game via the RPC (Remote Procedure Call) messages that are also stored in the servers RPC cache (according to their calling order) which are used if the other player arrives after the master player. Also to keep the communication of the objects as low as possible, we sent the positions and the orientations of the ships which the other side receives and vice versa. There are basically two types of ships in the game which are as follows; Ordinary Ships : The ships that each client owns thus are controlled by the player Network Ships: Can be also considered dummy ships that the clients opponents use

IV ÇOKLU OYUNCULU VE YAPAY ZEKAYA SAHİP ÜÇ BOYUTLU OYUN GERÇEKLEMESİ (ÖZET) Son yıllarda oyunların hayatımızdaki yeri giderek artmaktadır. Özellikle mobil platformların gelişmesinden sonra pek çok kişi akıllı telefonlarına oyun yüklemektedirler. Bu gelişmeler sonucunda Türkiyede de oyun endüstrisi gelişmektedir. Bizler bu proje kapsamında üç boyutlu, bilgisayara karşı veya çoklu oyunculu oynanabilen bir oyun geliştirerek oyun endüstrisine katkıda bulunmak istedik. Geliştirilen oyunun senaryosun detayları ise tam belli olmamakla beraber oyun, düşman iki uzay kolonisinin filolarının savaşını konu alır. Oyun bu sebeple tasarımcıların ve harita editörlerinin kolay içerik geliştire bilmesi icin oyun içi öğeler mümkün oldukça dinamik tasarlandı. Oyun Unity3D oyun motoru ile C# dili kullanılarak geliştirilmiştir. Şuanda ki sürüm Windows platformunda çalışmaktadır, fakat Unity nin bize MonoDevelop APIsi araciligi ile sağladığı olanaklar sayesinde ileride mobil platformlardan ios, Windows Phone, Android ve BlackBerry e; masaüstü işletim sistemlerinden Linux ve MacOs a çıkartmak mümkün olacaktır. Proje kapsamında geliştirilen oyunda belirli bazı değerlere önem verilmiştir. Bu etmenler kullanıcının oyundan mümkün olan en yuksek keyifi alabilmesi açısından büyük önem arz eder. Bu etmenler: Saniyede gösterilen kare sayısı (FPS) Gecikme (Latency) Bu değerler oyunun oynanabilir düzeyde olması açısından oldukça önemlidir. Örneğin, FPS in 30 un altına düşmesi durumunda oyun insan gözünün algılayabildiği 24 FPS sınırına yaklaşmasından dolayı oyunun yavaşlamaya başladığı hissini uyandırıp ve oyunu keyif alınamaz hale gelecektir. Çoklu oyunculu modda ise gecikmenin ise 100 milisaniyeyi geçmesi durumunda ise karşı oyuncunun gemilerine ait bilgiler geç iletileceğinden oyunun kalitesi düşecektir. Bu değerlerin kullanıcının kendi yerel bağlantısından da kaynaklanabileceği gibi yazılımın

V yaratabileceği bir gecikme de söz konusu olabilir. Biz bu projede özellikle yazılımdan kaynaklanabilen gecikmeleri önlemeye çalıştık. Bu değerlerin optimal düzeylerde tutulabilmesi için bazı teknolojilerden faydalanılmıştır ve bazı kararlar alınmıştır. Bunlar: FPS i yüksek tutmak adına mermilerin pooling mekanizması kullanılmıştır. Ayrıca, yapay zekanın gerçeklenmesinde kompleks algoritmalardan kaçınılarak her frame de gerçekleşecek iş miktarı azaltılmaya çalışılmıştır. Gecikmeyi düşürmek için ise oyuncuların attığı mermiler dışındaki mermiler doğrudan gönderilmemiştir. İki oyuncu içinde gemiler aynı yerde olacağından, yapay zeka tarafından kontrol edilen taretler kalan mermileri lokalde oluşturacaklardır. Kodların yazımında yazılım tasarım örüntülerinden (software design patterns) faydalanılarak modüler bir kod ortaya çıkartılmıştır. Bu sayede sistem sonradan yapılacak değişikliklerden en az derecede etkilenecektir ve gelecekte yapılacak geliştirmeler daha kolay hale gelecektir. Ayrıca gemilerin ve silahların bazı değerlerinin sürekli kod üzerinden değiştirilmesine gerek kalmamasını sağlamak için XML yapısından faydalanılmıştır. Bu sayede gemiler üzerinde yapılacak değişiklikler için kodun derlenmesi gerekmemektedir. Ek olarak, XML yapısı oyunda ırk sistemini oluşturmada yardımcı olmuştur. Bu sayede birden farklı ırka ait gemilere ait XML ve görüntü (.obj) dosyaları tutularak istenilenler kullanılabilir. Bu özgürlüğün kullanıcılara sağlanması ile kullanıcılarında yeni ırklar ve gemi görselleri ekleyebilmesi sağlanmıştır. Oyundaki haritalarda bu XML yapısından yararlanacak şekilde tasarlanmıştır. Bu sayede harita tasarımcıları hiçbir kod bilgisine sahip olmadan oyundaki haritaları kolaylıkla tasarlayabilmektedirler. Oyunun çoklu oyuncu desteğini sağlamak adına sunucu merkezli bir eşten eşe (Peer to Peer - P2P) mimari kullanarak, sunucunun ana kontrol görevinin üstlenmesi sağlanmıştır. Çoklu oyuncu modunun kararlılığıi için TCP protokolünün kullanıldığı soket bağlantılar kullanılmıştır. Burada TCP protokolünün kullanılmasında ki başlıca sebep, bu protokolün beraberinde getirmiş olduğu hata toleransı ve veri güvenilirliği yüksek bir bağlantı sağlamasıdır. Bu sayede oyundaki gemilerin pozisyonlar arasındaki interpolasyon işlemiden çıkan sonuç gerçeğine büyük ölçüde yakın ve hataları az bir sistem oluşturacaktır. Öte yandan soket bağlantısı merkez sunucu ile istemciler arasında hızlı bir

VI bağlantı kurmamıza olanak sağlar. İstemciler oyunun başında sunucu aracılığı ile RPC (Remote Procedure Call) mesajlarını göndererek oyundaki gemilerinin yerleşimleri ve gemilerinin özelliklerini birbirleri ile paylaşırlar. Bu mesajlar diğer tüm istemcilere gönderilmeden önce sunucunun RPC önbelleğinde tutulur. Bunun sebebi, istemcilerden birinin gecikmesi durumunda (RPC mesajları dagıtıldıktan sonra) bu mesajları sunucunun önbelleğinden gönderilme sırasına göre alabilmektedirler. Bu sayede oyundaki tüm oyuncular aynı konfigürasyona sahip olmaktadırlar. Ayrıca oyun sırasındaki ağ iletişiminin en az seviyede olması için gemilerin pozisyon ve rotasyon bilgileri istemciler arasında paylaşılmaktadır. Mermiler ve bunun gibi objeler gemilerin konumuna bağlı olarak oluştukları için bunların gönderilmesi yönünde bir karar alınarak ağ iletişiminin performansı arttırılmıştır. Bu kapsamda oyundaki iki gemi objesi aşağıdaki gibidir; Sıradan Gemiler : Kullanıcıların ve onların yapay zekalarının direkt olarak kontrol ettikleri gemilerdir. Bu gemiler çoklu oyuncu modunda konum ve rotasyon bilgilerini sunucu aracılığı ile karşıya göndermektedirler. Ağ Gemileri: Bu gemiler birnevi bir kukla görevi görüp, sunucudan gelen rakibin gemilerine ait pozisyon ve rotasyon bilgilerini interpolasyon ile oyun sahnesine yansıtırlar.

VII INDEX IMPLEMENTING A MULTIPLAYER 3D GAME WITH AI CAPABILITIES... III ÇOKLU OYUNCULU VE YAPAY ZEKAYA SAHİP ÜÇ BOYUTLU OYUN GERÇEKLEMESİ... IV 1. INTRODUCTION... 1 2. DEFINITION AND PLAN OF THE PROJECT... 2 2.1. Definition of the Project... 2 2.2. Analysis... 3 2.3. Distribution of Modules... 3 3. THEORETICAL INFORMATION... 5 3.1. Design Patterns... 5 3.1.1. Factory Design Pattern... 5 3.1.2. Strategy Design Pattern... 5 3.1.3. Bridge Design Pattern... 5 3.1.4. Decorator Design Pattern... 5 3.1.5. Singleton Design Pattern... 6 3.1.6. Observer Design Pattern... 6 3.2. Unity3D... 6 3.2.1. GameObject... 6 3.2.2. Transform... 7 3.2.3. Callback Methods... 7 4. ANALYSIS AND MODELING... 10 4.1. UML Diagrams... 10 4.1.1. Weapon... 10 4.1.2. Ship... 10 4.1.3. Factory... 11 4.2. Pooling... 12 4.3. Network Multiplayer... 12 4.4 Multiplayer Matchmaking... 14 5. DESIGN, IMPLEMENTATION AND TEST... 16 5.1. XML Design... 16 5.1.1. Ship Property... 16 5.1.2. Save File... 16 5.1.3. Map... 17

VIII 5.2. Ship AI Logic... 18 5.3. Ship AI States... 19 5.4. Weapon Targeting... 21 5.5. Multiplayer... 22 5.6. Game Creator... 23 5.7. Ammunition Pooling... 24 5.8. Graphical User Interface... 24 6. EXPERIMENTAL RESULTS... 27 6.1. CPU and Memory Utilization... 27 6.1.1. Start of the Game Session... 27 6.1.2. During the Game... 27 6.2. Network... 29 7. CONCLUSION AND PROPOSALS... 30 8. REFERENCES... 31 9. SOURCES... 32