প্রকল্প সম্পর্কে

GoWorld একটি স্কেলেবল ডিস্ট্রিবিউটেড গেম সার্ভার ইঞ্জিন, যা Golang-এ লেখা এবং মাল্টিপ্লেয়ার অনলাইন গেম তৈরির জন্য ডিজাইন করা হয়েছে। এতে একটি এন্টিটি ফ্রেমওয়ার্ক রয়েছে, যেখানে খেলোয়াড়, দানব এবং NPC-দের এন্টিটি হিসেবে উপস্থাপন করা হয়। একই স্পেসের মধ্যে থাকা এন্টিটি সরাসরি মেথড কল বা অ্যাট্রিবিউট অ্যাক্সেসের মাধ্যমে যোগাযোগ করতে পারে, আর ভিন্ন স্পেসের এন্টিটি RPC-এর মাধ্যমে যোগাযোগ করে। সার্ভার আর্কিটেকচারে একটি ডিসপ্যাচার, এক বা একাধিক গেম প্রসেস এবং এক বা একাধিক গেট প্রসেস থাকে। গেট ক্লায়েন্ট সংযোগ এবং প্যাকেট ট্রান্সমিশন পরিচালনা করে, গেম এন্টিটি পরিচালনা করে এবং গেম লজিক চালায়, আর ডিসপ্যাচার গেম এবং গেটের মধ্যে প্যাকেট রাউটিং করে। একটি মূল বৈশিষ্ট্য হলো হট-সোয়াপিং: SIGHUP পাঠিয়ে এবং -restore প্যারামিটার দিয়ে পুনরায় চালু করে গেম প্রসেস রিলোড করা যায়, যা উল্লেখযোগ্য খেলোয়াড় বিঘ্ন ছাড়াই সার্ভার-সাইড লজিক আপডেটের সুযোগ দেয়। GoWorld TCP, KCP এবং WebSocket সহ একাধিক যোগাযোগ প্রোটোকল সমর্থন করে, এবং ক্লায়েন্ট-সার্ভারের মধ্যে ট্রাফিক কম্প্রেশন ও এনক্রিপশন অফার করে। এতে 'goworld' নামে একটি কমান্ড-লাইন টুল রয়েছে, যা সার্ভার বিল্ড, শুরু, বন্ধ এবং রিলোড করতে ব্যবহৃত হয়। রিপোজিটরিতে চ্যাটরুম এবং Unity-ভিত্তিক মাল্টিপ্লেয়ার শুটিং গেমের মতো ডেমো রয়েছে, যার ক্লায়েন্ট JavaScript (Cocos Creator) এবং C# (Unity)-তে লেখা।