মূল কোড থেকে আলাদা করে গেম মেকানিক্স / নিয়মগুলি কার্যকর করা কি মূল্য?


25

এটি এই সম্প্রদায়ের ক্ষেত্রের সাথে খাপ খায় কিনা তা নিশ্চিত নয় বা পরিবর্তে স্ট্যাকওভারফ্লোতে যাওয়া উচিত।

আসুন ধরা যাক আমি চাই যে আমার গেমটি মূলত এটি সহজেই প্রসারিত হতে পারে, যেমন আমি চাই যে প্রচুর লোক এমনকি শালীন প্রোগ্রামিং জ্ঞান ছাড়াই কেবল বিদ্যমান নিয়মগুলিকে সামঞ্জস্য করতে সক্ষম হবে না, এমনকি এটি সম্পূর্ণ নতুন গেম মেকানিক্সকে যুক্ত করতে পারে। আমি নিজে খুব ভাল প্রোগ্রামার নই, তবে আমি শিখতে প্রস্তুত, আমার কিছু দিকনির্দেশনা এবং এটি সম্পন্ন করার নিশ্চয়তা প্রয়োজন need

আমি যা ভেবেছিলাম তা হ'ল মূল ইউটিলিটি কোড থেকে আলাদাভাবে কোনওভাবে গেম মেকানিক্স প্রয়োগ করা সম্ভব / সম্ভব ? আমি বলতে চাইছি, ট্যাবলেটপ গেমসের জন্য আমাদের কাছে সেই নিয়ম বই রয়েছে যাগুলিতে সমস্ত ক্রিয়নের প্রকৃত অ্যালগরিদম থাকে না, বরং কিছু প্রোটোকল এবং সীমা বর্ণনা করে, এই জাতীয় প্রতিটি আইটেমের প্রসঙ্গকে ভারীভাবে উল্লেখ করে। পিসি গেমের জন্য কি একই রকম কিছু করা সম্ভব, যেমন কিছু মানব-প্রোগ্রামিং ভাষার দ্বারা খুব উচ্চ-স্তরের, সহজেই পঠনযোগ্য (এবং পরিবর্তনযোগ্য) সমস্ত নিয়ম বর্ণনা করা যায়, যা তখন "গ্রাস" হয় এবং ইউটিলিটি কোড দ্বারা একটি বিভক্ত করে গেম মেকানিকের কাজ উদাহরণ?

এটি সত্যই মনে হচ্ছে আমার নিজের ভাষা এবং এর জন্য একটি সংকলক লিখতে হবে)) যা আমি অবশ্যই করতে পারব না। তবে সমস্যাটির আরও সহজ পদ্ধতির কি হতে পারে?

এফওয়াইআই: ইউটিলিটি কোডের জন্য আমার পছন্দের ভাষাটি পাইথন ৩.x হবে


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

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

উত্তর:


34

সাধারণভাবে বলতে গেলে, সহজেই যে কোনও সিস্টেমকে বাড়ানো যেতে পারে তার উপর নির্ভর করে তার সাবসিস্টেমগুলি দৃly ়ভাবে বা আলগাভাবে মিলিত হয় । সাধারণত, সাবসিস্টেমগুলি আরও আলগাভাবে মিশ্রিত হয়, এগুলি বিচ্ছিন্ন হওয়ায় এগুলি সংশোধন করা সহজতর হয় এবং সামগ্রিকভাবে সিস্টেমটির সম্পূর্ণ বোঝার প্রয়োজন হয় না।

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

আমি যে নিকটতম বিদ্যমান জিনিসগুলির বিষয়ে অবগত হই তা হ'ল ভ্যাসাল (যা আপনার বর্ণনার চেয়ে অনেক বেশি প্রোগ্রাম্যাটিক), বা ট্যাবলেটপ সিমুলেটর (যা বেশিরভাগ গেমের নিয়মকে ব্যাখ্যা এবং প্রয়োগের জন্য মানুষের মিথস্ক্রিয়া নির্ভর করে) এর জন্য একটি মোড তৈরি করে।


কঠিন পরামর্শ। এক্সটেনসিবিলিটি সহজ করার জন্য আমি আমার কোডটি যতটা সম্ভব looseিলে coupালাভাবে জোড় করে রাখার চেষ্টা করি, তবে হার্ডকোড / দম্পতী কিছু করা এত সহজ যেখানে আপনার ক্ষেত্রে সর্বদা ঘটনা থাকবে। এমনকি একজন পেশাদার বিকাশকারী হিসাবে কোনও সহজ কাজ নয়, এবং অবশ্যই অভিজ্ঞদের পক্ষে উপযুক্ত নয়।
angarg12

টিটিএস এখন লুয়াকে সমর্থন করে এবং আইন প্রয়োগের নিয়মগুলি এখন মানুষের ইন্টারঅ্যাকশনগুলির সাথে পুরোপুরি আপ নয়।
Ave নগরী:

17

আমি যা ভেবেছিলাম তা হ'ল মূল ইউটিলিটি কোড থেকে আলাদাভাবে কোনওভাবে গেম মেকানিক্স প্রয়োগ করা সম্ভব / সম্ভব?

এটা একেবারে সম্ভব। গেমিংয়ে প্রায়শই ব্যবহৃত একটি উপায় হ'ল লুয়া স্ক্রিপ্টিং

সংযুক্ত নিবন্ধ থেকে:

লুয়া মূলত ১৯৯৩ সালে সেই সময়ে কাস্টমাইজেশনের ক্রমবর্ধমান চাহিদা মেটাতে সফ্টওয়্যার অ্যাপ্লিকেশনগুলি প্রসারিত করার জন্য একটি ভাষা হিসাবে তৈরি করা হয়েছিল।

অনেক গেম লুয়া ব্যবহার করে। (আমি লিঙ্ক করব তবে নতুন ব্যবহারকারীর খ্যাতি আমার লিঙ্ক গণনা সীমাবদ্ধ করছে))

লুয়া স্ক্রিপ্টগুলি রান-টাইমে সংকলন করা যায়। এর অর্থ তারা (উদাহরণস্বরূপ) আপনার গেমের "স্ক্রিপ্টস" ডিরেক্টরিতে বসে পাঠ্য ফাইল হতে পারে, কোনও মডডার দ্বারা সহজেই সম্পাদনাযোগ্য। আপনার গেমটি এগুলিকে বোঝা করে চালায় runs

আমি দেখেছি লুয়া স্ক্রিপ্টগুলি ইন-গেম ইউনিটের বৈশিষ্ট্যগুলি সংজ্ঞায়িত করে। টিএ স্প্রিংয়ের এলোমেলো উদাহরণ এখানে

তবে আপনি "সমস্ত বিধি বর্ণনা করতে" চান। তত্ত্বের ক্ষেত্রে এটি সম্ভব, কারণ লুয়া একটি সম্পূর্ণ ভাষা, তবে সমস্যাটি হ'ল মূল গেম কোডটি তার আচরণটি প্রসারিত করার জন্য স্ক্রিপ্টগুলি সন্ধান করতে জানতে যথেষ্ট পর্যাপ্ত থাকতে হবে।

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

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


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

3

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

নিয়ন্ত্রণের চূড়ান্ত শেষে, আপনি সহজেই টুইটটিকে পুরো গেমের কোডটি পরিবর্তন করতে পারেন। এই মুহুর্তে আপনি প্রয়োজনীয়ভাবে ইউটিলিটি কোড এবং এটি কীভাবে ব্যবহার করবেন তার কমপক্ষে একটি উদাহরণ প্রকাশ করবেন। একটি টুইটার যতটা কোড চায় তার কোড ব্যবহার করতে পারে।

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

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

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


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

.. এবং এটি এমনভাবে বাস্তবায়নের জন্য যাতে কোনও ইউটিলিটি কোড পরিবর্তন করার প্রয়োজন হয় না এবং প্রোগ্রামিং সম্পর্কে আরও বেশি জ্ঞানের প্রয়োজন হয় না।
টিআইএস-

1
আমি মনে করি না সামঞ্জস্যতা সমস্যাগুলি রোধ করার কোনও উপায় থাকবে, (এমনকি কোনও কিছুর রঙ নির্ধারণও এর কারণ হতে পারে!) আমি মনে করি যে আরও ভাল কাজ করার সম্ভাব্য সামঞ্জস্যতা সমস্যা সনাক্তকরণের একটি উপায় এবং ব্যবহারকারীদের জন্য একটি দুর্দান্ত উপায় রয়েছে সাড়া. ইউটিলিটি কোড ইন্টারফেসের নকশা এবং প্রশ্নযুক্ত এক্সটেনশনের উপর নির্ভর করে কলব্যাক্স ইত্যাদি অর্ডার করার একটি উপায় থাকতে পারে যা কাঙ্ক্ষিত ফলাফল দেয়। তারপরে আবার নাও থাকতে পারে। ব্যবহারকারীকে সতর্ক করা যে সমস্যা হতে পারে এবং কেন কোনও ব্যাখ্যা ছাড়াই ভাঙা জিনিসগুলির চেয়ে ভাল ব্যবহারকারীর অভিজ্ঞতা মনে হয়।
Ryan1729

2

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

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


ধন্যবাদ, @ রোবিন এমন কারও কাছে পড়ার কোনও পরামর্শ যারা এই ডিজাইনের যথাযথভাবে যোগাযোগ করতে জানেন না? এই জাতীয় অ্যাপ্লিকেশনগুলির জন্য কি কিছু সু-প্রতিষ্ঠিত নকশার নিদর্শন রয়েছে? বিষয়গুলি কভার কোন বই?
টিআইএস-

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

2

এটি অবশ্যই সম্ভব! যদি এটি মূল্যবান হয় তবে আপনার লক্ষ্যগুলির উপর নির্ভর করে।

এই কাজটি করতে আপনাকে নিজের ভাষা আবিষ্কার করতে বা সংকলক লিখতে হবে না।

আপনি যদি চান যে আপনার গেমটি সহজেই প্রসারিত হয়, তবে এটির পক্ষে যাওয়া সম্ভবত একটি ভাল ধারণা idea

আপনার পক্ষে কমপক্ষে স্বল্পমেয়াদে, বোধগম্য সিস্টেম তৈরি করা এবং জিনিসগুলি সংশোধন করা সহজ করার পক্ষে এটি সম্ভবত আরও কাজ work

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

প্রকৃত কোডিংয়ের সাহায্যে গেমটি আরও / গভীরতর করার সম্ভাবনা রয়েছে, আমি সে সম্পর্কে কম জানি তবে আপনি মোডস ফোরামটি দেখে শিখতে পারবেন।

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

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


যদিও আমি দেখতে পাচ্ছি যে এক্সএমএল দিয়ে গেমের ডেটা কীভাবে সংজ্ঞায়িত করা যেতে পারে তবে আমি কীভাবে গেম মেকানিক্স / নিয়মগুলি সংজ্ঞায়িত করতে এটি ব্যবহার করতে পারি তা কল্পনা করতে পারি না। আপনি কি বিষয় সম্পর্কে কিছু উদাহরণ / নিবন্ধ সরবরাহ করতে পারেন?
টিআইএস-

@ এই নিয়মগুলি হ'ল অন্য ধরণের ডেটা। যদি আমার ইঞ্জিনটিতে "যদি এ বি ডু বি থাকে" থাকে তবে আমি এক্সএমএল ফাইল থেকে এ এবং বি লোড করতে পারি, এখন ব্যবহারকারীরা মোটামুটি স্বেচ্ছাচারী বিধিগুলি রাখতে পারেন, একটি অতিরিক্ত বিট যা আপনাকে সহায়তা করতে পারে সমস্ত সম্ভাব্য ও বিএস সহ একটি তালিকা সরবরাহ করে যা আপনি প্রতি সেমে সমর্থন করেন উদাহরণস্বরূপ, "যদি স্ট্যাটাসটাইপ 100 থাকে তবে মুভিস্পিড 100", "যদি স্ট্যাটাসটাইপ এবং সময়> এক্স তারপর স্ট্যাটাস স্ট্যাচটাইপ" সুতরাং আপনার নকশায় আপনি কী ধরণের পদক্ষেপের (স্ট্যাটাস, সময়, মুভ স্পিড) এবং কী ধরণের পদক্ষেপের অনুমতি দিতে চান তা নিয়ে ভাবেন and (এবং / অথবা, ইত্যাদি ...) কী ধরণের রচনার অনুমতি দেয় তা দিয়ে। যদি পানির নীচে এবং সময়> 5 স্বাস্থ্য -10।
ttbek

1

আপনি অবজেক্ট-ওরিয়েন্টড ডিজাইনটি সন্ধান করতে পারেন । পাইথন এর জন্য ভাল সমর্থন আছে।

এ সম্পর্কে মোটা বই রচিত যা আপনি নতুন হওয়ার সময় ভীতিজনক হতে পারে তবে মূল নীতিগুলি মোটামুটি সহজ।

মূল কথাটি হ'ল আপনি কী ধরণের অবজেক্টের সাথে কাজ করছেন তা চিহ্নিত করুন। আপনি কোন ধরণের গেমটি সম্পর্কে ভাবছেন তা আপনি বলবেন না, তবে প্লেয়ার, মনস্টার, আইটেম, সরঞ্জাম, অস্ত্র, আর্মার ইত্যাদির মতো জিনিসগুলি সাধারণ জিনিস।

আপনি যদি বিভিন্ন গেমের প্রকারগুলি চান তবে আপনি সম্ভবত একটি গেম অবজেক্ট চান যা বিজয় শর্ত এবং এই জাতীয় যত্ন নেয়। সম্ভবত একটি মানচিত্র অবজেক্ট?

কখনও কখনও এটি স্পষ্ট হয় না যে কোনও কিছুর জন্য কোনও বস্তুর যোগ্য হওয়া উচিত বা না, যেমন ক্ষতি। আপনি যদি কোনও জিনিসের ক্ষতি না করেন তবে কোডটি সহজ হবে, তবে এটিকে কোনও বস্তু তৈরি করা কাস্টমাইজ করা সহজ করে।

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

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

সুতরাং, সাবক্লাসিং আপনাকে বলার একটি উপায় দেয় যে "অস্ত্রগুলি অন্যান্য আইটেমগুলির মতো, তবে আপনি তাদের চালিয়ে নিতে পারেন, তারা আপনার ক্ষতি ইত্যাদি প্রভাবিত করে" "

সাবক্লাসিংটি আপনার আধুনিক বিল্ডারদেরও বলতে দেয় "আমার নতুন ধরণের অস্ত্রটি কেবল স্ট্যান্ডার্ড অস্ত্রগুলির মতো ..."

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

যতক্ষণ না আপনি কেবল নিজের নিজের দিকে ঝুঁকছেন আপনি চারপাশে জিনিস পরিবর্তন করতে পারবেন তবে এই মুহুর্তে আপনি জনসাধারণের কাছে কিছু প্রকাশ করবেন, পরিবর্তনগুলি করা আরও শক্ত হয়ে উঠবে! লোকেরা এমন মোড তৈরি করবে যা এখনকার মতো জিনিসগুলির উপর নির্ভর করে। এমনকি বাগ। লোকেরা এমন মোড লিখবেন যা কোডে থাকা বাগের উপর নির্ভর করে। আপনি যদি জিনিসগুলি পরিবর্তন করেন তবে সেই মোডগুলি ভেঙে যাবে এবং আপনার বাড়িতে লিঞ্চের ভিড় উপস্থিত হবে।

উদাহরণ স্বরূপ:

একজন অস্ত্রশস্ত্র বহনকারী খেলোয়াড় একাধিক আর্মোরস পরা মনস্টারকে আক্রমণ করে। এটি একটি নির্দিষ্ট গেম মোডে এবং একটি নির্দিষ্ট মানচিত্রে স্থান নেয়।

উভয় যুদ্ধযাত্রারই ক্রিটিকাল হিট এবং ডজের মতো দক্ষতা থাকতে পারে।

এখন কোন বিষয়টির জন্য দায়ী?

এর সঠিক উত্তর নেই। আপনি কোন ধরণের কাস্টমাইজেশন মঞ্জুর করতে চান তার উপর অনেক কিছুই নির্ভর করে।

আপনি যদি কখনও কোনও বস্তুকে কল না করেন (যেমন মানচিত্র), তবে সেই বস্তু আক্রমণটিকে কোনওভাবেই পরিবর্তন করতে পারে না।

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

শুভকামনা!


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

@ এটির মূল বিষয়টি গেমটির আপনার ওও মডেলের আসলে কী কী জিনিস তা সম্পর্কে সঠিক সিদ্ধান্ত নিয়েছে । শুরু করার "স্পষ্ট" জায়গাটি হ'ল "বিশেষ্য" দিয়ে যেমন অস্ত্র, বর্ম ইত্যাদি একমাত্র উপায় নয় এবং এটি অস্বাস্থ্যকর কোডের জট বেঁধে নিয়ে যেতে পারে। যদি কোনও নিয়ম বলে যে "আপনি মধ্যরাতে কোনও গির্জার উঠানে রৌপ্য বুলেট দিয়ে কিছু দানবকে গুলি করেন" আপনি কোডটি কোথায় প্রয়োগ করেন? গান (বা বুলেট) শ্রেণিতে, মনস্টার ক্লাসে, বন্দুক ব্যবহারকারীর ফাইটার ক্লাসে, চার্চইয়ার্ড শ্রেণিতে, না টাইম শ্রেণিতে? সর্বোত্তম উত্তর হতে পারে "উপরের
কোনওটিই নয়

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

1

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

উদাহরণস্বরূপ, আপনি ট্যাবলেটপ গেমগুলি উল্লেখ করেছেন; যদি আপনার ডি অ্যান্ড ডি এর উপর ভিত্তি করে একটি গেম থাকে তবে আপনার কাছে weapon_damageলাইনের মতো একটি ফাইল থাকতে পারে Battleaxe: 1d12। আপনার ইউটিলিটি কোডটি সেই ফাইলটি পড়ত এবং যখনই কোনও কোনও Battleaxeকোড আপনার ক্ষতি দ্বারা ডিল হয় generate a number from 1-12, 1 time(s)এবং সেগুলি যুক্ত করে। পড়ার জন্য লাইনটি টুইট করা Battleaxe: 4d6পরিবর্তে generate a number from 1-6, 4 time(s)এগুলি যুক্ত করে। একইভাবে, আপনার কাছে একটি ফোল্ডার থাকতে পারে Creaturesএবং প্রতিটি প্রাণীর জন্য আপনার কাছে একটি ফাইল থাকতে পারে, যেমন লাইনগুলি সহ AC: 12; তারপরে সেই ফোল্ডারে নতুন ফাইল যুক্ত করা নতুন প্রাণীর সৃষ্টি করবে। এমনকি এটি অক্ষর শ্রেণি, ভূখণ্ডের ধরণ, এক টন জিনিসের জন্যও করা যেতে পারে।

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

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


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

@ আপনি কি এই বিষয়টি নিয়ে উইকিপিডিয়াটির কী বিবেচনা করেছেন? en.wikipedia.org/wiki/Logic_programming
ttbek

0

[আমি কয়েক দশক ধরে সফটওয়্যার বিকাশকারী, তবে কোনও গেম বিকাশের অভিজ্ঞতা নেই, তাই সম্ভবত গেমস ইন্ডাস্ট্রি বিভিন্ন কারণ গ্রহণ করে, সম্ভবত ভাল কারণে ...]

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

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

সুতরাং, আপনি যেভাবে প্রকাশ করতে চান ঠিক তেমন কিছু অনুমানমূলক নিয়মাবলী এবং যান্ত্রিকগুলি লেখার জন্য একটি ভাল উপায় হ'ল (পাইথনের সিনট্যাক্স সহ, অবশ্যই), এইভাবে আপনি মূল APIটি কী বিধি এবং যান্ত্রিকতাকে সরবরাহ করতে চান তা সন্ধান করে স্তর।

এবং অবশ্যই, আমি বিদ্যমান গেমগুলির স্ক্রিপ্টিং সুবিধাগুলি একবার দেখে তার সুপারিশ করব যাতে তারা কী করে সে সম্পর্কে ধারণা পেতে।

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