রিয়েল-টাইম গেম সার্ভারের জন্য সি # কি কার্যকর? [বন্ধ]


22

বেশিরভাগ প্রশ্নের শিরোনামে।

মূলত, আমি একটি 2 ডি মাল্টিপ্লেয়ার অ্যাকশন গেমটি বিকাশ করতে শুরু করছি। ক্লায়েন্টটি (সম্ভবত) এক্সএনএ-তে থাকবে, এবং আমি ভেবেছিলাম যে সার্ভারের পাশের বিকাশের জন্য সি # ব্যবহার করা ভাল ধারণা কিনা তা সম্পর্কে আমি এখানে জিজ্ঞাসা করব।

আমি অনুমান করি যে ভাষাটি পরিচালনা করা সমস্যাযুক্ত কিছু নয় কারণ জাভা এমনকি এমএমও গেম সার্ভারগুলিতেও ব্যবহৃত হচ্ছে (আমি যদি ভুল হয়ে থাকি তবে আমাকে সংশোধন করুন), তবে এই উদ্দেশ্যে সি # এড়ানোর কোনও কারণ আছে কি? এসিকিউএল সার্ভারের সাথে চ্যাট করার জন্য, টিসিপির মাধ্যমে যোগাযোগ করা, দ্রুত এবং প্রতিক্রিয়াশীল হওয়া আমার দরকার। এবং যদি সি # এড়ানোর কোনও কারণ না থাকে তবে আমি কীভাবে এই জাতীয় ওয়েব সার্ভার স্থাপন করব, এটি কি সার্ভার মেশিনে একটি নেট নেট চালানো হবে?


2
আপনি জাভা এমএমও সার্ভার সম্পর্কে সঠিক ।
রিকিট

উত্তর:


22

আমার অভিজ্ঞতায় কেবল কার্যকর নয়, তবে সত্যিই ভাল। আমি সি # ব্যবহার করে বেশ কয়েকটি এমএমও সার্ভার বিকাশ করেছি এবং আমি অবশ্যই বলব যে ভাষা এবং প্ল্যাটফর্মের পছন্দ নিয়ে আমি কখনও আফসোস করি না।

সাধারণভাবে সি # এবং .NET- এর জন্য প্রচুর দুর্দান্ত লাইব্রেরি এবং সরঞ্জাম রয়েছে - নেটওয়ার্ক, লগিং, ও / আর ম্যাপিং ইত্যাদি And এবং, জাভা সি # এর তুলনায় আরও অভিব্যক্তিপূর্ণ এবং কম শব্দাবলীর (কিছু লোক যদিও এই বিষয়ে তর্ক করতে পারে) )

কিছু লোককে ভয় দেখায় এমন জিসি "ওভারহেড" আসলেই সমস্যা নয়, যদি না আপনি প্রতি সেকেন্ডে কয়েক বিলিয়ন বরাদ্দ দিয়ে অপব্যবহার করে থাকেন। উদাহরণস্বরূপ, আমাদের বর্তমান সার্ভারটি ভারী বোঝার অধীনে 50 এমবি / সেকেন্ড অবধি বরাদ্দ করে এবং জিসি কোনও লক্ষণীয় ল্যাগ প্রবর্তন করে না। কৌশলগত জায়গাগুলিতে আমাদের অবজেক্ট পুলিং ব্যবহার করতে হবে, যদিও - সর্বাধিক গুরুত্বপূর্ণ, নেটওয়ার্ক প্যাকেটগুলির প্রতিনিধিত্বকারী অবজেক্টগুলি পোল্ড করা হয় এবং আবর্জনা-সংগ্রহ করা নয়। তবুও, পুলিং বন্ধ থাকা সত্ত্বেও, জিসি সবচেয়ে বড় সমস্যা নয়।

সি # কতটা দুর্দান্ত তার উদাহরণ হিসাবে আমরা সম্প্রতি এটি প্রয়োগ করেছি। আমাদের সার্ভারটি বেশ কয়েকটি ডাব্লুসিএফ পরিষেবা চালায় যা গেমের ক্লায়েন্ট অ-সময়-সমালোচনামূলক কাজের জন্য ব্যবহার করে এবং আমরা সেগুলি সার্ভার প্রশাসনের জন্যও ব্যবহার করি। দেখা যাচ্ছে, আমাদের গেমের সামগ্রীগুলিকে কেবল কলারে ফিরিয়ে দেওয়ার জন্য ডাব্লুসিএফ পরিষেবা করা খুব সহজ। সুতরাং আমরা ঠিক এটি করেছি, তারপরে লিনিক্যপ্যাডে একটি ছোট্ট প্লাগইন তৈরি করেছি যা আমাদের সার্ভারের সাথে সংযোগ স্থাপন করে - এবং এখন আমরা এই জাতীয় অনুসন্ধান চালাতে পারি

from character in Service.GetOnlineCharacters()
where character.LocationManager.LocationId==5 && character.Attributes.Level<10
select new { character.Id, character.Nick }

একটি লাইভ সার্ভারে, কম না! আমি মনে করি না যে আপনি এটি অন্য কোনও প্ল্যাটফর্মের মাধ্যমে করতে পারেন। দু'দফা কাজের জন্য না, অন্তত।


আমি বিশেষত লিনকিউ ব্যবহার পছন্দ করি, এটি সার্ভারটিকে এত সহজ এবং দ্রুত বিকাশ করতে সক্ষম করে।
থমাস

26

অবশ্যই, আপনি সি # ব্যবহার করতে পারেন।

সি # বা অন্যান্য। নেট ইকোসিস্টেমগুলিতে পারফরম্যান্সের ক্ষেত্রে সচেতন হওয়া বড় সমস্যাগুলির মধ্যে একটি হ'ল জিসি - .এনইটি ফ্রেমওয়ার্কটি একটি "সার্ভার" জিসি সহ জিসির বেশ কয়েকটি স্বাদ সরবরাহ করে যা সম্পর্কে জানার মতো worth বুদ্ধিমানভাবে মেমরি পরিচালনা করা (উদাহরণস্বরূপ, পুলিং দ্বারা) এমনকি একটি ব্যবস্থাপনিত পরিবেশে এখনও একটি ভাল কৌশল।

এসকিউএল এর সাথে ইন্টারঅ্যাক্ট করার জন্য, সি সি # তে টিসিপি, এবং সিটিয়ের মাধ্যমে যোগাযোগ করার জন্য বেশ কয়েকটি শক্তিশালী এপিআই রয়েছে, হয় বেস কাঠামোর অংশ হিসাবে বা তৃতীয় পক্ষের মাধ্যমে, যাতে আপনার কোনও সমস্যা না হওয়া উচিত।

আপনি যদি সত্যই আপনার সার্ভারটি ওয়েব-ভিত্তিক হতে চান তবে আপনি এএসপি.এনইটি বা অনুরূপ ব্যবহার করতে পারেন; আপনি যদি কেবল একটি প্রক্রিয়া চালাতে চান এবং টিসিপি সংযোগগুলি শুনতে চান আপনি কেবল একটি .exe এবং সার্ভার মেশিনে উপযুক্ত নির্ভরতা স্থাপন করতে পারেন, উপযুক্ত পোর্টগুলি খুলতে পারেন এবং .exe চালাতে পারেন।


5

আমি মনে করি এটি দুর্দান্ত ধারণা। ভাষা অবশ্যই এটি সক্ষম, এবং বিশেষত এটি যদি আপনি জানেন তবে নতুন ভাষা শেখার জন্য একগুচ্ছ সময় ব্যয় করবেন না কারণ এটি "দ্রুত"। আপনার সার্ভারের আসল বাধা হ'ল নেটওয়ার্কের বিলম্ব; অতিরিক্ত মিলিসেকেন্ড বা দুটি কারণ আপনি সি ++ এর পরিবর্তে সি # ব্যবহার করেছেন তাতে কোনও পার্থক্য হবে না।


5
পরিচালিত ভাষাগুলিতে গেম ডেভলপমেন্টের (বা কোনও রিয়েল টাইম ডেভলপমেন্ট) আসল ঝুঁকিটি হ'ল সবকিছু মিলিসেকেন্ড বা দুটি বেশি সময় নেয় না, তবে জিসি জিনিসগুলি চূড়ান্ত করার সিদ্ধান্ত নিয়েছে বলে এলোমেলো ফ্রেমগুলি কয়েক মিলসেকেন্ড বেশি সময় নেয়। "বাটোনেক" এর মতো পদগুলির সাথে থ্রুপুট-কেন্দ্রিক তুলনা উত্সাহিত করা বিভ্রান্তিকর।

3

যদি আপনার উইন্ডোজটিতে স্থাপন করা ঠিক থাকে তবে আমি দৃ strongly়ভাবে এটির সুপারিশ করব, বিশেষত যেহেতু আপনার ক্লায়েন্টটি সি #।

গেম সার্ভার বিকাশ যদিও কম মূল্যায়ন করবেন না। এমনকি সাধারণ চ্যাট-কেবল একযোগে সার্ভার তৈরি করা কোনও তুচ্ছ কাজ নয় এবং শীঘ্রই আপনার সম্মতি, লকিং, কর্মক্ষমতা ইত্যাদি সম্পর্কিত প্রচুর প্রশ্ন থাকবে you'll

একটি সূচনা পয়েন্ট হিসাবে, আমি চাই আপনি এই পৃষ্ঠাটি একবার দেখে নিন যা বেশ কয়েকটি প্ল্যাটফর্মগুলিতে কীভাবে সাম্প্রতিক সকেট প্রোগ্রামিং করবেন তা বিস্তৃতভাবে ব্যাখ্যা করে:

http://geekswithblogs.net/quension/archive/2006/06/30/83760.aspx

আপনি যদি সত্যই এটি সম্পর্কে গুরুতর হন তবে আমি আপনাকে স্টিভেন্সের ইউনিক্স নেটওয়ার্ক প্রোগ্রামিংয়ের পুরোপুরি অধ্যয়ন করার পরামর্শ দিচ্ছি। এটি ইউনিক্সের সি সকেটে ফোকাস করা হলেও নীতিগুলি। নেট সহ প্রতিটি অন্যান্য প্ল্যাটফর্মের জন্য একই।

সম্পাদনা করুন: এটি নেট এ সাম্প্রতিক সার্ভারগুলির জন্য স্কেলাবিলিটি এবং পারফরম্যান্সের উপর ফোকাস করা অন্য একটি দুর্দান্ত সংস্থান। এটি আর উপলভ্য নয়, তবে ওয়েবব্যাক মেশিনে থাকা আমাদের বন্ধুদের কাছে এর একটি অনুলিপি রয়েছে।

http://replay.waybackmachine.org/20080405220143/http://www.coversant.net/dotnetnuke/Coversant/Blogs/tabid/88/EntryID/10/Default.aspx


1

একটি 'অসুবিধা' হ'ল সি # এর সাথে যদি আপনি এটি একাধিক প্ল্যাটফর্মে ব্যবহার করতে চান তবে আপনার কোডটি মনোর সাথে কাজ করবে কিনা তা নিশ্চিত করার জন্য আপনাকে খুব সতর্কতা অবলম্বন করতে হবে। আপনার যত্ন নেওয়া সমস্ত কিছু যদি এটি একক প্ল্যাটফর্মে চালিত হয় এবং উইন্ডোজগুলি সেই প্ল্যাটফর্ম হয়, তবে অন্যরা যেমন উল্লেখ করেছে তেমন আপনার কোনও সমস্যা হওয়া উচিত নয়।


MONO অন্যান্য প্ল্যাটফর্মগুলিতে স্থাপন করার জন্য ব্যবহার করা যেতে পারে তা ভুলে যাবেন না। আমি বিশ্বাস করি যে সেকেন্ড লাইফ এই পদ্ধতির ব্যবহার করে - তাদের অভ্যন্তরীণ গেমের স্ক্রিপ্টগুলি প্রকৃতপক্ষে। নেট আইএল-এ সংকলিত হয় তবুও তারা লিনাক্স এএফএআইকেতে স্থাপন করে।
শ্যাডোচ্যাজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.