Bir gündən az bir zamanda bir realtime multiplayer brauzer oyunu – Hissə 1/4 – Dev icması, multiplayer binası | Pulsuz oyun oyunları
Pulsuz oyun oyunları
Gördüyünüz kimi, bu sinifdə üç boş metod var. Bunlar fazerlə gəlir.Səhnə sinifi. Bu metodların hər biri aşağıda izah edildiyi kimi fərqli bir funksiyaya malikdir
Bir gündən az bir zamanda bir realtime multiplayer brauzer oyunu – Hissə 1/4
Oyun oynayırsan. Duh! Heç birisini qurmağı düşündü. Hmm.. Oyunlar tikmək çətin görünür. Çox hərəkət edən parçalar (olduqca sanki), oyun inkişafı, ayaqlarını şəbəkə, riyaziyyat, qrafika və kimi müqəddəs sulara dərin batıran Devs ilə məhdudlaşdığı kimi görünür. Bununla birlikdə, internetdə bu qədər sürətlə inkişaf edən və son illərdə yayılan bütün yeni protokollar və kitabxanalarda, brauzerə əsaslanan multiplayer oyunları ilə başlamaq üçün indi çox sadədir. Bu yazıda, kosmik işğalçıların (ah, nostalji) bir zamanlı multiplayer oyununun addım-addım tətbiqi ilə addım-addım baxacağıq!) phaser3 ilə və ably zamanlı. Mən HTTPS-də final oyunu keçirdim: // Space-işğalçılar-multiplayer.herukuapp.com / cəhd etmək üçün. Yolda, memarlıq, sistem dizaynını, şəbəkə protokollarını arxasında başa düşəcəyik və eyni zamanda multiplayer brauzerinə əsaslanan oyunlar qurarkən yadda saxlamaq üçün xəbərdarlıqlara baxacağıq. Bu dərslik seriyası dörd hissəyə bölünür:
- 1-ci hissə: Oyun anlayışlarına və fazer kitabxanasına giriş
- Hissə 2: Zamanlı tətbiqlər üçün şəbəkə protokollarını qiymətləndirir
- Hissə 3: Bütün oyunçuları sinxronizasiya etmək üçün server tərəfi kodunu tətbiq etmək
- Hissə 4: Oyunu göstərmək üçün müştəri tərəfi kodunu bitirmək
Başlamazdan əvvəl son bir şey. Bu məqalə JavaScript və Express / Nodejs’in əsas bir anlayışını alır. Çalışacağam və hər şeyi mümkün qədər izah edim
Gəmini alaq!
Hissə 1 – Oyun anlayışlarına və fazerinə giriş
Orijinal retro klassik ilə eyni olmadığı üçün oyun üçün qaydalara baxaraq başlayaq.
Oyun Multiplayer kosmik işğalçıları üçün qaydalar
- Yeni bir oyunçu qoşulduqda, təsadüfi olaraq üç mövcud çeşiddən bir canavar avatar təyin ediləcəkdir.
- Hər bir oyunçu öz avatarlarını klaviaturadakı ox düymələrindən istifadə edərək sola və ya sağa daşıya bilər
- Hər bir oyunçu ağ rəngdə öz avatarlarını görəcək, ancaq hamıya əvvəlcədən təyin edilmiş təsadüfi bir rəngdə olacaq
- Əvvəlcədən oyunçu oyunu oyuna qoşulduqda, bir gəmi işə salınır. Bu gəmi hər 5 saniyədə təsadüfi olaraq dəyişən təsadüfi seçilmiş bir istiqamətdə üfüqi ox boyunca hərəkət edir. Bununla yanaşı, gəminin sürəti də dəyişəcək. Bu gəmi həmçinin əvvəlcədən təyin edə biləcəyimiz müntəzəm olaraq güllə vurur
- Bütün avatarlar avtomatik olaraq oyun boyu əvvəlcədən qurulmuş bir artımla aşağıya doğru hərəkət edir.
- Oyunu qazanmaq məqsədi gəmi tərəfindən çəkilən bir və ya daha çox güllə öldürmədən oyun ekranının alt sərhədinə etməkdir.
Realtime multiplayer oyununun komponentləri
Şəbəkə edilmiş bir zamanlı bir oyunun arxasında baş verən bir dəstə kimi görünsə də, həqiqətən üç əsas komponentə düşürlər:
Bunların hər birinə baxaq.
1. Aktivlər
Aktivlər oyunu təşkil edən kritik elementlərdir. Oyununuzda görünəcək bir obyektin görünməsini istəsəniz, ya oyun kətanına birini çəkə bilərsiniz və ya daha yaxşı bir görüntü və ya bir sprite vərəqindən və ya birlikdə canlandırın. Eynilə, oyunda tanıtmaq və oynamaq istədiyiniz hər hansı bir səs onun aktivlərinə düşəcəkdi.
Oyunun tema tema super arcade etmək istəyirsinizsə, bu piksel sənət təlimatını necə öyrənə bilərsiniz.
2-ci. Fizika
Fizika bizə aktivləri hərəkətə gətirməyə imkan verən və oyunumuzdakı fərqli obyektlərin bir-biri ilə necə qarşılıqlı əlaqəsi olmasına qərar verdi. Məsələn, Sadə bir oyunda, top, müəyyən bir istiqamətdə geri döndü, yastığın hansı hissəsindən asılı olaraq müəyyən bir sürətlə geri döndü. Eynilə, oyunumuzda, bu, gəminin getməli olduğu hesablama, bu güllələrin atılması, oyunçuların avatarları və s. Olan bu güllə obyektlərinin toqquşması ilə getməlidir.
Bütün bunlar əsasən fizika anlayışlarına uyğun olaraq riyazi hesablamalardır. Ancaq bu qədər riyaziyyat, hətta sadə bir oyun üçün sıfırdan yazmaq üçün həddən artıq çox ola bilər. Beləliklə, hər birini sıfırdan yazmaq əvəzinə, bizim üçün riyaziyyat sehrinin çoxunu edə biləcək bir fizika mühərrikindən istifadə edə bilərik.
3-cü. Şəbəkə
Çox oyunçu canlı onlayn oyun üçün xüsusilə vacib olan son əsas komponent şəbəkədir. Bütün oyunçular arasında sinxronizasiyanı qorumaq üçün super çətin ola bilər, hansı oyunçunun öldüyünü və hər kəs bu iddia ilə razılaşarsa.
Bütün bunlar mürəkkəb səslənməyə başlasa, narahat olmayın, olmamalıdır. Düzgün yolda başlamağımıza kömək edə biləcək bir çox mövcud dizayn nümunələri var. Söz mövzusu, söz mövzusu mexanika ilə əlaqədar oyun memarlığının necə istədiyimizi seçə bilərik. Bu məqalə seriyası boyunca bu oyunu qurmaq və niyə qurmaq üçün getdiyim nümunələr və memarlıq seçimləri haqqında danışacağıq.
İndi əsas komponentləri daha yaxşı başa düşdüyümüzdə, bu işimizdə bu işləməyimizi araşdıracağıq.
Aktivlər əlavə etmək və fizikanı aktivləşdirmək üçün Phaser 3 istifadə edin
Phaser, HTML5 üçün açıq mənbəli bir kətan və WebGL-nin JavaScript Çərçivəsidir. Oyun yaratmaq üçün Phaser 3-dən istifadə edəcəyik. Xüsusi olaraq versiyanı xatırlamağımın səbəbi, sintaksis də daxil olmaqla, fazer 2 və 3 arasında bir çox qırılma dəyişikliklərinin olmasıdır. Ayrıca, gələcəkdə oyuna bir neçə sərin yeni xüsusiyyətlər əlavə etmək istəsəniz, nəyin / harada görünəcəyinizi bilməlisiniz.
Yalnız fazer aktivləri bir kətan üzərində göstərməyə, animasiyalarda və səsləri və s. Veb səhifədə göstərməyə imkan vermir, eyni zamanda daxili bir fizika mühərriki (çox əslində) ilə də gəlir. Bu o deməkdir ki, iki obyekt toqquşduqda və baş verən təqdirdə toqquşma üçün bir göz saxlayacaq və kod parçasını bir parça saxlayacaq və icra etmək üçün bir göz saxlayacaq şeyləri söyləyə bilərik.
Phaser 3 ilə ilk dəfə işlədiyiniz təqdirdə tövsiyə etdiyim üçün həqiqətən yaxşı bir video dərslik seriyası var.
TL-də; Dr versiyası, Phaser3 ilə, kətan və oyun haqqında məlumatı, o cümlədən kətan, onun tərzi atributları, oyunumuza daxil olan müxtəlif səhnələr olan bir konfiqurma obyektini təyin edə bilərik (qısa müddətdə müzakirə edildi), fizika mühərrikinin növü (fazerin çoxu olduğu kimi) və s.
Daha sonra yeni bir oyuna başlamaq üçün konfiqurasiya obyektindən keçdik.
Bu hələ heç bir kod görmədiyiniz üçün bir az qarışıq səslənə bilər. Bunu növbəti edək.
Oyunla başlamaq
İndi oyun ekranına düz olaq. Daha sonra başlatma və liderlik səhifələrindən narahat olacağıq. Oyunumuzda göstərilən bir kətan olan bir html səhifə olardı. Bu kətan faktiki oyunu tutacaq və işləyəcək. Beləliklə, bir fayl yaradaq, İndeks adlandıraq.html . Hər şeyi mütəşəkkil saxlamaq üçün, bütün HTML sənədlərimizi görüşlər və bütün müştəri tərəfi javascript faylları adlı bir qovluqda, ictimaiyyətə deyilən bir qovluqda saxlayacağıq . Baxışlara / İndeksdən başlayaq.Əsas skeleti olan HTML faylı:
Gördüyünüz kimi, burada etdiyimiz hər şey, qısa müddətdə əlavə edəcəyimiz CSS və JS fayllarına bağlantıdır, eyni zamanda daha əhəmiyyətlisi Phaser JS CDN-ə bağlantıdır. CSS-ləri birbaşa GitHub Layihəsindən kopyalaya bilərsiniz
Bundan başqa, HTML gövdəsində, oyun konteynerinin şəxsiyyət vəsiqəsi olan bir div var . Bu JavaScript vasitəsilə oyun kətanlarımızı əlavə edəcəyimiz yerdir.
Dövlət qovluğunda bir fayl yaradaq, skript adlandıraq.JS və əvvəllər danışdığımız oyun konfiqurasiya obyekti təyin edərək başlayın.
Gördüyünüz kimi, kətan və onun fon rənginin ölçüsünü ifadə etməkdən başqa, bu kətanın hara getməli olduğu (valideyn tərəfindən təyin olunduğu) və bunun bir hissəsi olmaq istədiyimiz bir sıra olduğu yerləri də göstərdik oyun.
Fazer oyunun məzmununu təşkil etmək üçün ‘səhnələr’ anlayışından istifadə edir. Vizual olaraq hər hansı bir nöqtədə gördüyünüz kimi bir mənzərəni düşünə bilərsiniz. Oyun oynayarkən, oyun oyun obyektləri arasında fərqli qarşılıqlı əlaqələri olan fərqli bir fonda keçərsə, bu, əvvəllər göründüyünüzdən ayrı bir səhnədirsə.
Oyunumuz üçün, bir səhnəyə sahib olacağıq (GameScene tərəfindən təyin olundu). Phaser-də bir səhnə fazeri uzanan bir sinifdir.Səhnə sinifi. Bunu oyunumuz üçün müəyyənləşdirək. GameScene sinfinə istinad etdiyi üçün konfiqurasiyadan yuxarıdakı aşağıdakı kodu əlavə edin.
Gördüyünüz kimi, bu sinifdə üç boş metod var. Bunlar fazerlə gəlir.Səhnə sinifi. Bu metodların hər biri aşağıda izah edildiyi kimi fərqli bir funksiyaya malikdir
- Öncədən yükləmə üsulu, ehtiyac duyduğumuz bütün mənbələri alır, harada olursunuzsa olun, onları yükləyir və onları oyuna əlavə etmək istədiyimiz zaman onları hazır saxlayır.
- Yaratma üsulu, oyunun ilk işlədiyi zaman bir dəfə icra olunur. Bu metodda bütün dəyişkən başlatmaları, animasiya tərifləri və s. Əlavə edə bilərik.
- Yeniləmə () metodu, oyun yandırıldığı müddətcə bir döngədə davamlı olaraq yerinə yetirilir və buna görə də oyun məntiqinə görə oyun obyektlərini daim yeniləyə bilir. Avatarları yeniləyəcəyik, güllə vur, gəmini, hamısını bu üsulda hərəkət etdirəcəyik..
Aktivləri yükləmək və animasiyalar yaratmaq
Gəlin indi davam edək və bəzi aktivləri yükləyək. Öncədən () metodunu aşağıdakı kimi təyin edin
Mən əvvəlcə bu oyunu bir CDN linki ilə alınan çömçə içərisində olan bütün aktivləri saxlayan bu oyunu tutdu. Eyni istifadə edə bilərsiniz, əks halda Amazon S3 başqa bir populyar seçimdir.
Üç növ avatar, hamısını ağ və üç rəngdə əlavə etdik. Bunlardan başqa, gəmi, güllə üçün aktivlər və əlbətdə bir oyunçu öldükdə oynamaq üçün partlayışa da kömək etdik.
Gördüyünüz kimi, bundan istifadə edərək fazerdə bir spritesheet aktivini yüklədik.yükləmək.Spritesheet () və üç parametr göndərdi:
- eyniləşdirici
- faktiki faylın yolu
- Faylın ölçüləri (piksellərdə).
Biz də sadəcə bir görüntü adlandıra bilərik, amma sonra qısa müddətdə gördüyünüz kimi sərin animasiyaları edə bilməyəcəyik.
P.S. Avatar rənglərini həyata keçirmək üçün daha yaxşı bir yol var. Sadəcə ayrı-ayrı aktivlər kimi eyni obyekti çox rəngdə yükləmək əvəzinə mövcud bir sprite-ə bir rəngli rəng əlavə edə bilərik. Hələ necə olduğunu bilmirəm, amma bunu anladığım zaman bunu yeniləyəcəyəm 🙂
“Partlayış” sprite hesabatını yoxlayırsınızsa, bir-birinin yanında yerləşdirilən müxtəlif şəkillərin bir dəstəsinin olduğunu görəcəksiniz. “Animasiya” səbəb olduğumuz yol, bu fərqli bir sürətlə bu fərqli görüntülərdən keçərək, baş verən bir partlayışın şəffaf videosu olduğu kimi görünən bir sürətlə davam edir.
Yarat () metodunda bu partlayış üçün animasiyanı müəyyənləşdirəcəyik:
Fazerin bu istifadə etdik.animasiya.animasiya yaratmaq üçün () metodu yaradın. Bu üsul daxil olur:
- Daha sonra bu animasiya oynamaq üçün istifadə edəcəyimiz açar
- Bu animasiyanı tətbiq etmək istədiyimiz aktivin identifikatorundan istifadə edərək çərçivələri yaradan çərçivələr
- Bu animasiya oynamaq istədiyimiz sürəti ifadə edən ÇOX
- animasiyanın neçə dəfə işləyəcəyini ifadə edir
- HideonComplete, animasiya edildikdən sonra canlandırılan aktivin olub olmadığını müəyyənləşdirir
Yeniləmədə () metoduna bir şey əlavə etməyəcəyik. Əgər fərq etsəniz, həqiqətən oyunu birləşdirməmişik, bu məqalə seriyasının sonrakı hissəsində bunu edəcəyik.
Budur. Part 2-də Zamanlı Proqramlar üçün Şəbəkə Təşkilatı haqqında məlumat əldə edəcəyik – Zamanlı tətbiqlər üçün şəbəkə protokollarını qiymətləndirən
Bu seriyanın bütün məqalələri:
- 1-ci hissə: Oyun anlayışlarına və fazer kitabxanasına giriş
- Hissə 2: Zamanlı tətbiqlər üçün şəbəkə protokollarını qiymətləndirir
- Hissə 3: Bütün oyunçuları sinxronizasiya etmək üçün server tərəfi kodunu tətbiq etmək
- Hissə 4: Oyunu göstərmək üçün müştəri tərəfi kodunu bitirmək
Bu dərsliyə aid ayrı bir buraxılış, yoxlamaq istəsəniz Github-da mövcuddur.
Bu layihədəki son inkişaflar üçün GitHub layihəsini də izləyə bilərsiniz.
Hər hansı bir sualınız varsa, xahiş edirəm Twitter @Srushtika-da mənə müraciət edin. Mənim dms açıqdır 🙂
Kateqoriya: Multiplayer bina
Chimeraland PC (Windows) və Səviyyə Soft-dan hazırlanmış və Səviyyə Sonsuzu Yumruğu (Windows) və Mobil (Android / iOS) üçün Açıq Dünya Sandbox Survival (Massively Multiplayer Onlayn Rol Oyunu Oyunu) oynaması üçün pulsuzdur. Oyun tarixdən əvvəlki, mifik dünyada qurulub […]
Muck POCK-lar üçün PC (Windows) PC (Windows) üçün pulsuz * tək oyunçu və multiplayer Survival Roguelike oyunudur (Windows). Muck, aşağı bir poli, təsadüfi (çox) sağ qalma qarışığı (e).g. […]
Sandbox, aktiv inkişafda (açıq alfa) (açıq alfa) və Ethereum Blockchain (Windows və Mac) üçün pulsuz oyun və cəmiyyətə uyğun oyun ekosistemi və virtual dünyadir. Oyunçular qura, sahibi, paylaşa və […]
Core, Crayta və Roblox-a bənzər bir oyun üçün oyun toplusu və oyun hazırlayan platforma. Core, başqa sözlə, oynamaq üçün çox sayda pulsuz oyun və dünyanı asanlıqla öyrənmək üçün dünyalardır […]
Crayta, Core və Roblox-a bənzər PC üçün Unreal Engine 4-də qurulmuş pulsuz birgə birgə oyun hazırlayan bir platforma və multiplayer arcade oyun kolleksiyasıdır. Oyunçular, proqramlaşdırma təcrübəsindən asılı olmayaraq, buludda bir-birinə atlaya və birlikdə oyun yarada bilərlər. […] -dan
Vəhşi Terra Online, qum qutusu və sağ qalan bir orta əsr fantaziya dünyasında quraşdırılmış Sandbox və Survival Xüsusiyyətləri olan pulsuz bir MMORPG-dir. Bir tapşırıq zəncirini doldurmaq və avadanlıq yaratmaq üçün min canavar öldürmək lazım deyil. Hər şey çoxdur […]
ARK: Survival Evolved (Mobil) bir adada qapalı qalan oyunçuların, rouminq yaşamalı olduğu mobil (Android, iOS) studiya tətbiqi-macəra-macəra-macəra Survival oyunudur Dinozavrlar və digər tarixdən əvvəlki heyvanlar, təbii təhlükələr, […]
Təkmilləşdirilmiş MMO / Multiplayer Apocalypse Survival Janrında PC (Windows, Mac və Linux) üçün Zombie temalı Sandbox Survival kavgası və atıcı oyunu oynamaq pulsuzdur. Diqqəti yönəltməkdənsə […]
Totemori, hər kəsin devrilmək istəyərkən qüllələr qurduğunuz əyləncəli və yenilikçi pulsuz personal multiplayer bravler oyunudur. Totemori, 4 oyunçu üçün yerli və co-op multiplayer xüsusiyyətlərinə malikdir. Dostlarınıza qarşı oynayın və ya botlara qarşı təcrübə edin, […]
Galactic Junk Liqası bir rəqabətdən azad olan Crafter Arena – demək olar ki, sonsuz gəmi bina imkanları ilə qarışıq bir atıcıdır. Bir şey qurmaq. Hər kəslə vuruşun. Kosmosda. Junk gəmilərinizi sanki hər hansı bir forma və ölçüdə düzəldin və […] yaradıcılığına qarşı vuruşun
Yaradıcılar, macəra, kəşfiyyat və yaradıcılıq haqqında macəra, kəşfiyyat və yaradıcılıq haqqında xoş bir oyun və sonrakı nəsil mmo qum qutusu oyunudur. Və indi oynamaq pulsuzdur. Şiddətli heyvanlar tərəfindən mühasirəyə alınan geniş və sirli bir dünyada qapalısınız və […]
Gunscape bir FPS inşaat dəstidir. Bir nasos hərəkət sandboxunda yaradıcılığınızla vəhşi getməyinizə imkan verən bir oyundur! Gunscape bu, tək oyunçu yaratmaq üçün əvvəlcədən tanış olan bir blok yerləşdirmə interfeysinə əsaslanaraq asan istifadə olunan alətlər təqdim edərək edir
Trove PC (Windows, Mac), Xbox One, PS4 və Nintendo keçid üçün Trion Worlds tərəfindən açılan, açıq fəaliyyət-macəra voxel mmorpg pulsuzdur. Trove XÜSUSİYYƏTLƏRİ XÜSUSİYYƏTLƏRİ Qonaqlar, sandıqlar və kiçik düşmənləri ilə dolu saysız-hesabsız aləmlər. Kəşf edin və yolunuzu yaradın […]
ROBLOX, istifadəçilərə öz oyunlarını və səviyyələrini dizayn etmək və bölüşmək və bölüşmək və bölüşmək və digər istifadəçilərin yaratdığı bütün növ oyunları oynamağa imkan verən oyunun yaradıcısı və oyun yaradıcısı platformasıdır (Core və Crayta) …]

















