Bagaimana cara membuat server game RPG sederhana? [Tutup]

8

Saya sedang mengerjakan game Sprite Kit. Saya ingin menjadikannya permainan multipemain yang sebenarnya, yang saya maksudkan bahwa setiap orang yang bergabung dalam permainan memiliki kamera mereka sendiri. Saya telah melihat tutorial tentang permainan multipemain di mana para pemain berbagi layar permainan yang sama, tetapi bukan itu yang saya inginkan.

Saya mengerti harus ada server yang terhubung dengan pemain, yang berarti "dunia" yang terhubung dengan pemain harus berjalan di server. Apakah ini benar?

Bagaimana cara saya memiliki server yang menjalankan 'dunia' untuk game ini? Apakah itu harus jenis server tertentu, atau bisakah saya menggunakan Node.js atau apa pun yang saya inginkan?

duxfox--
sumber

Jawaban:

17

Anda berada di jalur yang benar.

Inti dari model jaringan klien-server adalah bahwa server adalah pusat pengetahuan yang terhubung dengan klien . Server game biasanya berisi

  • representasi dunia dalam memori ,
  • daftar pemain yang terhubung ,
  • sebuah permainan lingkaran (dengan misalnya handler kontrol player, mesin fisika & AI).

Anda juga akan memerlukan saluran komunikasi antara server Anda dan klien, sehingga klien dapat mengirimkan tindakan pemain, dan server dapat mengirimkan keadaan permainan.

Konfigurasi server klien yang lebih maju mungkin melibatkan

  • delta-kompresi (hanya mengirim apa yang telah berubah antara status game, bukan status game keseluruhan) untuk alasan kinerja,
  • prediksi input sisi klien untuk mengurangi penundaan input yang dirasakan (mis. CS: kontrol GO ),
  • sebuah database pada-disk (misalnya World of Warcraft 's penyimpanan persediaan),
  • pekerjaan pembongkaran ke mesin klien (mis. AI Maple Story musuh),
  • atau penyerahan koneksi antar server (mis . Dunia yang menghubungkan OpenSimulator ).

Mulai dari yang sederhana. Yang terbaik adalah menambahkan kompleksitas hanya jika diperlukan . Lubang kelinci ini dalam.


Anda menyebutkan Node.js : Saya telah menulis beberapa server untuk permainan kecil dan itu bagus. Tetapi Anda dapat menulis server dan klien apa pun yang Anda suka. Eve Online sebagian besar di Erlang , Minecraft di Jawa, hampir semuanya oleh Valve ada di C ++, dan lain-lain.

Anko
sumber
Terima kasih atas jawaban terinci! satu hal yang masih membingungkan saya adalah: karena permainan ini ditulis menggunakan kit sprite untuk iPhone, apakah server perlu tahu tentang ini sama sekali? Saya hanya bingung karena saya terus berpikir, permainan ada di sprite kit, jadi dunia yang disediakan oleh server juga harus sprite-kit. Apa pendapat Anda
duxfox--
@AbdulAhmad Tidak, Anda dapat membuat server dengan bahasa atau pustaka apa pun yang Anda inginkan. Perlu diingat bahwa server Anda adalah dan harus sepenuhnya terpisah. Anda sedang membangun dua aplikasi yang berbeda dan Anda harus memikirkannya seperti itu. Satu untuk klien dan satu untuk server. Bagian yang mengikat mereka bersama adalah protokol komunikasi antara kedua aplikasi. Meskipun akan ada detail lain yang harus dikoordinasikan di antara mereka (seperti kondisi permainan), pada dasarnya mereka sama sekali tidak terkait. Anda bahkan tidak akan banyak menggunakan Sprite Kit di sisi server.
Fuzzy Logic
@ FuzzyLogic demikian, mencoba memahami ini lebih baik. Jika server menyediakan 'dunia' (gambar, fisika, dll.) Maka klien (iPhone) seharusnya tidak memilikinya, karena klien hanyalah "tampilan" untuk lingkungan ini. Apakah ini benar? Jadi apakah saya hanya akan menggunakan sprite-kit di sisi klien untuk hanya memberikan lapisan visual ke data yang berasal dari server? Dengan kata lain, permainan harus dibangun terutama di sisi server (semua logika dll) dan klien hanya pandangan saya, dan di mana saya dapat mengirim acara / perintah ke server. Ini berarti saya tidak memerlukan logika mesin / game fisika dalam sprite-kit
duxfox--
@AbdulAhmad Yap! Klien yang melakukan pemrosesan seminimal mungkin disebut klien tipis . Ini adalah titik awal yang bagus.
Anko
3
@AbdulAhmad Ya dan tidak. Itu cara yang baik untuk memikirkannya tetapi terutama karena alasan efisiensi, klien biasanya akan menduplikasi banyak hal daripada meminta server untuk setiap detail, jika tidak, Anda mungkin akan memiliki masalah kinerja. Seperti yang disebutkan anko, itu akan menjadi tempat yang baik untuk memulai. Ini adalah topik besar, ada banyak cara, banyak pertimbangan dan banyak bagian sehingga sulit untuk sepenuhnya menjelaskan bagaimana semuanya harus bekerja. Betapa rumitnya itu tergantung pada detail gim Anda. Sejujurnya, berdasarkan pertanyaan Anda, saya tidak menyarankan Anda mencoba melakukan ini.
Fuzzy Logic