আমার একটি অনলাইন গেম রয়েছে যেখানে খেলোয়াড়রা কোনওভাবে বিশ্বকে আকার দিতে পারে - যেমন। আলটিমা অনলাইন এর আবাসন, যেখানে আপনি বিশ্বের মানচিত্রের নির্দিষ্ট কিছু অংশে সরাসরি আপনার ঘর তৈরি করতে পারেন। এই পরিবর্তনগুলি যা স্থায়ী বিশ্বের অংশ হিসাবে সময়ের সাথে অবিচল থাকতে হবে।
একই সময়ে, ডিজাইন দলটি নতুন খেলোয়াড়দের জন্য গেমটি উন্নত করতে ও প্রসারিত করতে নতুন সামগ্রী যুক্ত করছে এবং পুরানো সামগ্রীকে সংশোধন করছে। তারা পরীক্ষার সময় প্রথমে একটি ডেভলপমেন্ট সার্ভারে এটি করবে এবং পরে তাদের কাজটি সরাসরি সার্ভারে প্লেয়ারদের "কাজের" সাথে মিশ্রিত করতে হবে।
ধরে নিচ্ছি আমরা গেম ডিজাইনের সমস্যাগুলি ঠিক করেছি - যেমন। খেলোয়াড়রা কেবল মনোনীত অঞ্চলগুলিতেই বিল্ড তৈরি করতে পারে, তাই ডিজাইনার সম্পাদনাগুলির সাথে তারা কখনও ভৌগলিকভাবে সংঘর্ষে লিপ্ত হয় না - নতুন ডিজাইনার ডেটা যখন নতুন প্লেয়ার ডেটার সাথে একত্রীকরণ করা হয় তখন দ্বন্দ্ব এড়াতে বা উপাত্তের কাঠামোগুলি সাজানোর ভাল উপায়গুলি কী?
উদাহরণ 1: কোনও প্লেয়ার একটি নতুন ধরণের আইটেম তৈরি করে এবং গেমটি এতে 123456 আইডি বরাদ্দ করে। এই আইটেমটির সমস্ত উদাহরণ 123456-এ ফিরে এসেছে Now এখন কল্পনা করুন গেম ডিজাইনারগুলির একটি একই সিস্টেম রয়েছে এবং একটি ডিজাইনার 123456 নম্বরযুক্ত একটি নতুন আইটেম তৈরি করেন this কীভাবে এড়ানো যায়?
উদাহরণ 2: কেউ একটি জনপ্রিয় মোড তৈরি করে যা আপনার সমস্ত ড্রাগনগুলিকে একটি ফরাসি উচ্চারণ দেয়। এটিতে একটি নতুন অবজেক্টযুক্ত একটি স্ক্রিপ্ট অন্তর্ভুক্ত assignFrenchAccent
যা তারা প্রতিটি ড্রাগন অবজেক্টকে নতুন ভয়েস সম্পদ বরাদ্দ করতে ব্যবহার করে। তবে আপনি আপনার "নেপোলিয়ন বনাম স্মাগ" ডিএলসি স্থাপন করতে চলেছেন যার একই নামের একটি অবজেক্ট রয়েছে - আপনি গ্রাহকসেবার সমস্যা ছাড়াই কীভাবে এটি করতে পারেন?
আমি নিম্নলিখিত কৌশলগুলি সম্পর্কে চিন্তা করেছি:
- আপনি 2 পৃথক ফাইল / ডিরেক্টরি / ডাটাবেস ব্যবহার করতে পারেন, তবে তারপরে আপনার পঠিত অপারেশনগুলি উল্লেখযোগ্যভাবে জটিল। "সমস্ত আইটেম দেখান" ডিজাইনার ডিবিতে একটি পঠন এবং প্লেয়ার ডিবিতে একটি পড়ার সম্পাদন করতে হয় (এবং এখনও এটি কোনওভাবে 2 এর মধ্যে পার্থক্য করতে হয়))
- আপনি একটি স্টোরের মধ্যে 2 টি পৃথক নেমস্পেস ব্যবহার করতে পারেন, যেমন। স্ট্রিংগুলিকে প্রাথমিক কী হিসাবে ব্যবহার করা এবং এগুলিকে "ডিজাইন:" বা "প্লেয়ার:" দিয়ে উপস্থাপন করা, তবে সেই নামগুলির স্থান তৈরি করা অ-তুচ্ছ এবং নির্ভরতা পরিষ্কার নয় n't (উদাহরণস্বরূপ, আরডিবিএমএসে আপনি স্ট্রিংগুলি প্রাথমিক কী হিসাবে দক্ষতার সাথে ব্যবহার করতে সক্ষম নাও হতে পারেন designer আপনি ডিজাইনার ডেটা হতে নির্দিষ্ট সংখ্যার নীচে সমস্ত প্রাথমিক কী বরাদ্দ করতে পারেন, যেমন 1 মিলিয়ন, এবং সেই বিন্দুটির উপরে থাকা সমস্ত কিছু) প্লেয়ারের ডেটা But তবে সেই তথ্যটি আরডিবিএমএসের কাছে অদৃশ্য এবং বিদেশী কী লিঙ্কগুলি 'ডিভাইড' অতিক্রম করবে, যার অর্থ সমস্ত সরঞ্জামাদি এবং স্ক্রিপ্টগুলিকে এর চারপাশে স্পষ্টতই কাজ করা দরকার))
- আপনি রিয়েল-টাইমে সর্বদা একই ভাগ করা ডাটাবেসে কাজ করতে পারেন তবে কার্য সম্পাদনটি দুর্বল হতে পারে এবং প্লেয়ারের ডেটার ক্ষতি হওয়ার ঝুঁকি বাড়ানো যেতে পারে। এটি বিভিন্ন বিশ্ব ডেটা সহ 1 টিরও বেশি সার্ভারে চালিত গেমগুলিতেও প্রসারিত হয় না।
- ... অন্য কোন ধারণা?
আমার কাছে এটি ঘটে যে যদিও এটি প্রাথমিকভাবে অনলাইন গেমগুলির জন্য একটি সমস্যা তবে ধারণাগুলিও মোডিংয়ের ক্ষেত্রে প্রযোজ্য হতে পারে, যেখানে সম্প্রদায় একই সময়ে মোড তৈরি করে যে বিকাশকারীরা তাদের গেমটি প্যাচ করে। নতুন প্যাচগুলি বের হওয়ার সাথে সাথে মোড ব্রেক করার সম্ভাবনা হ্রাস করার জন্য কি কোনও কৌশল এখানে ব্যবহৃত হচ্ছে?
আমি এটিকে "সংস্করণ নিয়ন্ত্রণ" হিসাবেও ট্যাগ করেছি কারণ এক স্তরে এটি যা হ'ল - ডেটা বিকাশের 2 টি শাখা যা মার্জ করা দরকার। সম্ভবত কিছু অন্তর্দৃষ্টি সেই দিক থেকে আসতে পারে।
সম্পাদনা করুন - সমস্যাটি পরিষ্কার করতে সহায়তার জন্য উপরে কয়েকটি উদাহরণ যুক্ত করা হয়েছে। আমি ভাবতে শুরু করি যে সমস্যাটি সত্যই একটি নেমস্পেসিংয়ের মধ্যে একটি, যা একটি স্টোরের মধ্যে সংমিশ্রিত কীগুলির মাধ্যমে প্রয়োগ করা যেতে পারে। এটি অন্তত মার্জ কৌশলটি সহজতর করে। তবে এমন বিকল্প থাকতে পারে যা আমি দেখছি না।