(আরপিজি) ড্রপ টেবিল ডিজাইন


18

আমার ধারণা এই প্রশ্নটি এমএমও এবং ডায়াবলোর মতো গেমগুলির সাথে আরও সম্পর্কিত।

ড্রপ টেবিল বাস্তবায়নের জন্য সাধারণ নকশাগুলি কী কী, যেখানে কোনও দৈত্য শতাংশের উপর নির্ভর করে বিভিন্ন ধরণের আইটেম ফেলে দিতে পারে? আমি অনুমান করি যে আইটেমের ধরণগুলির জন্য 'শতাংশ ওয়েটেজ' এর অভিধান থাকার সহজতম উপায়, তবে আমরা যদি নতুন আইটেমের প্রকারের (উদাহরণস্বরূপ, যখন ডি 2 সম্প্রসারণে রুনস এবং নতুন শ্রেণীর আইটেমগুলি অন্তর্ভুক্ত করা হয়) চালু করতে চান তবে এটি বাড়ানো শক্ত is


4
নতুন আইটেম যুক্ত করার সময় কেন শতাংশের অভিধান বাড়াতে কঠিন? আমি বলতে চাইছি যদি আপনার 100% যোগফল তৈরি করার জন্য সমস্ত শতাংশের প্রয়োজন না হয় (এবং এটি তখনই ঘটে যদি আপনি চান যে কোনও দৈত্য সর্বদা একক আইটেম ফেলে দেয় যা আমার কাছে বেশ বিস্ময়কর), আমি এটি দেখতে পাচ্ছি না সমস্যা।
n0rd

1
অর্ক => d 'ছিনতাইকারী', 'তরোয়াল' 'আর্মার' Say বলুন, এবং আমার কাছে নতুন আইটেমের প্রকার আছে, বলে রুনে; আমি সরাসরি প্রতিটি দানব টাইপের সাথে যুক্ত সমস্ত অভিধান আপডেট করতে হবে। অবশ্যই, এটি ইন্ডিয়ারেশনের অন্য স্তরটি সমাধান করতে পারে না। সুতরাং প্রশ্নটি হল, সেই স্তরটি কেমন দেখাচ্ছে?
এক্সট্রাকুন

আমি নিশ্চিত নই কেন আপনি কেন একটি অভিধান আপডেট করা কঠিন বলে মনে করছেন। পাইথনে, নতুন মানগুলির সাথে একটি অভিধান প্রসারিত করা একক পদ্ধতিতে সম্পন্ন হয়, উদাহরণস্বরূপ। আপনি কোথায় অসুবিধা বলে মনে করছেন তা স্পষ্ট করে বলতে পারেন?
কাইলোটন

2
এক্সট্রাকুন, আপনি নীচে আমার উত্তরটি একবার দেখুন, আপনার "ইন্ডিয়ারেশনের অন্য স্তর" প্রশ্নের উত্তর আছে। ড্রপগুলি ফ্ল্যাট টেবিল হিসাবে চিকিত্সার পরিবর্তে, আপনি সেগুলি নেস্টেড এক্সপ্রেশন থেকে তৈরি করতে পারেন। আপনি যদি নামযুক্ত ম্যাক্রোগুলি (যেমন ফাংশনগুলি) মঞ্জুরি দেন তবে আপনি বিভিন্ন সত্ত্বা জুড়ে একটি ড্রপ টেবিলের অংশগুলি পুনরায় ব্যবহার করতে পারেন।
উপুড়হস্ত

2
আপনি গেম বিকাশের 'ক্যাচ' নিয়ে সবেমাত্র হোঁচট খেয়েছেন। অবশ্যই, আপনি দুই দিনের মধ্যে একটি গেম তৈরি করতে পারেন, তবে তারপরে সামগ্রী যুক্ত করার পাঁচ বছর পরে আসবে। এবং সামগ্রী যুক্ত করা হয় নাকাল। হয়রান।
টোর ভ্যালামো

উত্তর:


22

আমি যখন কাজ করছিলাম তার জন্য, আমি ড্রপ উত্পাদন করার জন্য একটি বেশ নমনীয় ডেটা-চালিত সিস্টেম কার্যকর করেছি। আমি এখানে এটি নথিভুক্ত করেছি । এলোমেলোভাবে বেছে নেওয়া বেশ কয়েকটি আইটেম নির্বাচন করার জন্য এটি মূলত সামান্য ডিএসএল।

একটি সাধারণ ড্রপ দেখে মনে হচ্ছে:

1-10 copper coin

এটি কেবল 1 থেকে 10 এর মধ্যে এলোমেলো তামার মুদ্রা ফেলে দিতে বলেছে যখন আপনি শাখা যুক্ত করবেন তখন জিনিসগুলি আরও নমনীয় হয়:

one of
    turquoise stone (50%)
    onyx stone (25%)
    malachite stone (15%)
    jade stone (10%)

একটি "একটি" প্রদত্ত সম্ভাবনার উপর ভিত্তি করে এর একটি শিশু শাখা নির্বাচন করে এবং তারপরে এটি মূল্যায়ন করে। ড্রপ একাধিক আইটেম ড্রপ করতে পারে:

any of
    turquoise stone (50%)
    onyx stone (25%)
    malachite stone (15%)
    jade stone (10%)

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

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

একটি দানবের ড্রপের উদাহরণ :

:: ancient dragon
    glyph   = D
    groups  = dragon
    drops
        (coins)
        2-3(1:8) one of
            (any-weapon)
            (any-armor)

এখানে, (coins), (any-weapon), এবং (any-armor)সব ম্যাক্রো কল আছেন:

(any-armor)
    one of
        (shield)
        (helm)
        (boots)
        (gloves)
        (cloak)
        (robe)
        (soft-armor)
        (hard-armor)

যার ফলস্বরূপ জিনিসগুলি ডাকে:

(cloak)
    one near level
        cloak (10)
        velvet cloak (20)
        fur-lined cloak (50)

আপনি বাস্তব প্রোগ্রামিং ভাষার মতো গভীরভাবে গভীরভাবে অভিব্যক্তি ফেলে দিতে পারেন। এটি আপনাকে এমন সংমিশ্রণ দেয় যা একটি সাধারণ টেবিল-ভিত্তিক পদ্ধতি দেয় না।

সমস্ত ডেটা-চালিত সিস্টেমগুলির মতো, আপনি অবিচ্ছিন্ন জটিল ড্রপ তৈরি করে নিজেকে অভিভূত করতে পারেন, তবে এটি আমার লক্ষ্যগুলি পূরণ করে:

  1. কোডগুলির বাইরে কী কী জিনিস পুরোপুরি বাদ পড়ে তা নির্দিষ্ট করতে সক্ষম হোন।
  2. কোডে মূল সিস্টেমটি প্রয়োগ করা সহজ Simple
  3. নির্দিষ্ট দানবগুলি কী ড্রপ করে তা টিউন করতে সক্ষম হন যাতে প্লেয়ারটি লক্ষ্য-ভিত্তিক অনুসন্ধান করতে পারে। ("আমার একটি নেকলেস দরকার। আমি বামনদের সন্ধান করব যেহেতু তারা সেগুলি ফেলেছে to")

এটি প্রয়োগকারী সি # কোডটি এখানে


এটি এমন একটি বাস্তবায়ন যা আমি এর আগে দেখিনি। ধন্যবাদ!
এক্সট্রাকুন

12

স্টেনডালে আমাদের লুট টেবিলগুলির তালিকা। প্রতিটি প্রবেশে আইটেমের নাম, একটি মিনিট এবং সর্বাধিক পরিমাণ এবং সম্ভাবনা থাকে। অভ্যন্তরীণ কাঠামোটি আমরা প্রাণীটির ওয়েবপৃষ্ঠায় যা প্রদর্শিত করি তার সাথে অনেকটাই মিল ।

আমাদের পক্ষে এটি গুরুত্বপূর্ণ যে গেম ডিজাইনার যাদের বিশ্বের একটি দুর্দান্ত জ্ঞান রয়েছে তারা এই জাতীয় জিনিসগুলি সংজ্ঞায়িত করতে পারেন। এটি হ'ল প্রোগ্রাম কোড স্তরে জটিল যুক্তি না বুঝে। সুতরাং আমাদের কাছে প্রোগ্রাম কোডে প্রাণী এবং আইটেমগুলির সংজ্ঞা নেই তবে সেগুলিXML ফাইলগুলিতে যেমন elves.xML বা ক্লাব.এক্সএমএল এ সরানো হয়েছে । তাদের জন্য আমাদের একটি গিআই সম্পাদক রয়েছে তবে বেশিরভাগ গেম ডিজাইনার সরাসরি .xML ফাইলটি পরিবর্তন করে।

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

আইটেমগুলির জন্য আমাদের অনুরূপ দৃষ্টিভঙ্গি রয়েছে তবে এটি বর্তমানে কেবল একটি আচরণের মধ্যে সীমাবদ্ধ: একজন ডিজাইনার একটি নতুন আইটেম যুক্ত করতে পারেন এবং "কনজিউটেবল আইটেম", "কী আইটেম" বা "অ্যাটাক আইটেম", "বানান", "স্ক্রোল" এর মতো কোনও আচরণ সংজ্ঞায়িত করতে পারেন প্রোগ্রাম যুক্তি আছে।


8

ডি অ্যান্ড ডি ট্যাবলেটপ গেমিংয়ে লুটপাটের ধরণের ধারণা রয়েছে। বেশিরভাগ দানব এক বা একাধিক টেবিল থেকে নেমে আসবে এবং এই টেবিলগুলি আপনি আপনার প্রসারণে আপডেট করবেন। দানবগুলি "65% সাধারণ, 10% রত্ন, 15% আর্ট, 10% সরঞ্জাম" ফেলে রাখবে তবে আপনি এই টেবিলগুলির মধ্যে যা ছিল তা আপডেট করবেন।

উদাহরণস্বরূপ রত্নগুলিতে এলোমেলো ব্যাপ্তির স্লট থাকে যা "1 মণি (25%) 2 রত্ন (50%) 5 রত্ন (75%) 100 রত্ন" ফেরত দেয়। এবং আপনি যখন বিশেষ রুনি রত্ন যুক্ত করতে চান, তখন টেবিলটি "1 মণি (25%) 2 রত্ন (50%) 5 রত্ন (75%) 100 রত্ন (95%) 1 রানজিজে" আপডেট করুন।

তবে, অন্যদিকে, যদি আপনি ইতিমধ্যে শতাংশের ওজন পেয়েছেন, তবে কেবলমাত্র আপনার প্রসারণের সমস্ত দানব টেবিলগুলি আপডেট করবেন না কেন? টেক্সচার এবং মেসের তুলনায় অবশ্যই এর মতো টেবিলগুলি ছোট পেড। এছাড়াও আপনার শতকরা ১০০ পর্যন্ত তালিকায় রাখার দরকার নেই, এটি কেবলমাত্র একটি অনুমান যা আপনি শুরু করেছিলেন এবং আপনার এলোমেলো মান উত্পন্ন করার আগে আপনি প্রকৃত মোটটি তুলনা করতে পারেন। যদি ওজনগুলি 120-এ যোগ হয় তবে 1-100 এর পরিবর্তে 1-120 থেকে কেবল একটি মান তৈরি করুন।


3

পৃষ্ঠতলে এটি "ওজনযুক্ত এলোমেলো নির্বাচন" সমস্যার মতোই মনে হয়।

এলোমেলো ঘটনা নির্ধারণের জন্য অ্যালগরিদম

প্রতিটি ইভেন্টে আপেক্ষিক সম্ভাব্যতা বরাদ্দ করুন, সেগুলি যুক্ত করুন, তারপরে আপনি কোন ইভেন্টটি চান তা সিদ্ধান্ত নিতে সেই সীমার মধ্যে একটি এলোমেলো সংখ্যা বেছে নিন।

এমনকি যদি আপনি শতাংশ ব্যবহার করতে পছন্দ করেন - যা একই সিস্টেম, কেবলমাত্র 100 এ স্কেল করা হয়েছে - আপনি স্টাফ যুক্ত করা কতটা কঠিন তা আপনি অতিরিক্ত মূল্যায়ন করছেন। আপনার যদি 100% থাকে এবং তারপরে 20% যোগ করে প্রসারিত হন তবে কেবলমাত্র সমস্ত মান (120/100) দ্বারা ভাগ করুন এবং আপনি মোট 100% এ ফিরে এসেছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.