গেম স্টোরি ইভেন্ট প্রোগ্রামিং


28

আমি সি / সি ++ এবং ডাইরেক্টএক্সে একটি গেম ইঞ্জিন তৈরি করেছি।

আমার কাছে মানচিত্রের জন্য একটি টাইল ইঞ্জিন রয়েছে, অ্যানিমেটেড প্লেয়ার / এনপিসি স্প্রাইটস, এনপিসি, মেনুগুলি এবং স্তর পরিবর্তনের সাথে কথা বলছি তবে কোনও গেম নেই, এটি খালি মনে হচ্ছে।

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

কিছু লোক একটি সেভ ফাইল বলেছে যা খেলায় প্রতিটি সম্ভাব্য ক্রিয়া / রাষ্ট্র পরিচালিত পতাকা ধারণ করে তবে এটি হাস্যকর মনে হয়।

এটি কিছুটা উচ্চাভিলাষী তবে আমি পুরানো পোকেমন / ফাইনাল ফ্যান্টাসি গেমগুলির মতো একটি খেলা পাওয়ার লক্ষ করছি।

কেউ কি জানেন যে এই গেমগুলি কীভাবে কাজ করে বা তত্ত্বটি কীভাবে ব্যবহৃত হয়?

আমি কিছুক্ষণ খুঁজছিলাম এবং লোকেরা যে কোনও ইনপুটকে সত্যই প্রশংসা করবে।

উত্তর:


19

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

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

আপনার পৃথিবীর সমস্ত কিছুর রাজ্য সংরক্ষণ করার দরকার নেই; গল্পের অবস্থা। সংস্থাগুলি নিজেরাই জানে যে বর্তমান অবস্থার উপর নির্ভর করে কীভাবে প্রতিক্রিয়া জানাতে হয়।


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

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

এই এফএসএ আপনি যে বিষয়ে কথা বলছেন, আমি এর ব্যাখ্যাটি কোথায় খুঁজে পাব, પ્રાધાન્ય সরল এবং অন্য তত্ত্বগুলি জড়িত না করে।
স্কিথ

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

7

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

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

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

আপনি আপনার বিশ্বের, চরিত্র এবং গল্পের জন্য একটি সমৃদ্ধ পটভূমি তৈরি করেছেন এবং গেমটি সেই পটভূমির সাথে সামঞ্জস্য রয়েছে তা নিশ্চিত করুন। আপনার গল্পটি আগে পরিকল্পনা করুন।

গেমদেবও চেষ্টা করে দেখুন


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

অগত্যা নয়, 5 টি স্বতন্ত্র সুপারপোজেবল রাষ্ট্রের কল্পনা করুন। আপনি 5 বুলিয়ানগুলির জন্য 32 সম্ভাব্য শাখা পান। আমি মনে করি এটা যুক্তিযুক্ত। এছাড়াও, ট্রিগার সিস্টেমগুলি প্রচুর পেশাদার গেমগুলিতে ব্যবহৃত হয়, বিশেষত কারণ আপনি তখন ট্রিগারগুলির সিরিজ ব্যবহার করে স্ক্রিপ্ট আচরণটি করতে পারেন।
pwny

2

যেমন Sftrabbit উল্লিখিত, এটি একটি রাষ্ট্রের মেশিনের জন্য একটি নিখুঁত অ্যাপ্লিকেশন।

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

এর একটি ভাল, খুব শিথিল অ্যানালগ হ'ল একটি বেছে নিন আপনার নিজের অ্যাডভেঞ্চার বই। প্রতিটি পৃষ্ঠায় গল্পের অংশ এবং প্লেয়ার যে সিদ্ধান্ত নিতে পারে তার কিছু বর্ণনা করে কিছু পাঠ্য থাকে। প্রতিটি সিদ্ধান্ত অন্য পৃষ্ঠায় নিয়ে যায়। কিছু পৃষ্ঠা পূর্ববর্তী-পরিদর্শন করা পৃষ্ঠাগুলিতে আবার লিঙ্ক করতে পারে etc.

মত পুরাতন পাঠ্য-ভিত্তিক দু: সাহসিক কাজ গেম Zork এবং Phobos এর চামড়া দেবী , এবং কুখ্যাত সিয়েরা * কোয়েস্ট গেম ( SpaceQuest রজার Wilco চরিত্রে অভিনয় স্থান তত্ত্বাবধায়ক আমার প্রিয় এক ) সিস্টেমের এই ধরনের একটি খুব সহজ সংস্করণ ব্যবহার করা হয়েছে। মানচিত্রের প্রতিটি কক্ষটি একটি রাজ্য ছিল, এমন প্রস্থান ছিল যা অন্যান্য রাজ্য বা কক্ষের সাথে সংযুক্ত ছিল। কোনও আইটেম অর্জন করা গ্লোবাল স্টেট অবজেক্টে একটি পতাকা সেট করে। প্রতিটি ঘরে কোন অক্ষর বা আইটেম উপলব্ধ ছিল তা নির্ধারণের জন্য প্রতিটি ঘরে এই পতাকাগুলি পরীক্ষা করা হবে।

সুতরাং, আপনার রাজ্যগুলি শ্রেণি বা কাঠামো হিসাবে প্রয়োগ করা যেতে পারে, যার জন্য প্রতিটি সম্পত্তি রয়েছে:

সম্পদ তালিকা - পটভূমির গ্রাফিক্সের পয়েন্টারগুলির তালিকা এবং আপনার ঘর / রাজ্য / স্তর প্রদর্শন করার জন্য অন্য যে কোনও কিছু প্রয়োজন।

প্রবেশের শর্তাদি - এমন একটি অর্জন যা অবশ্যই ইতিমধ্যে একটি স্তরে প্রবেশ করতে পৌঁছেছে

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

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

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

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

আশাকরি এটা সাহায্য করবে.


এই শহরটির একটি উদাহরণ কল্পনা করুন। আমার কাছে একটি ফাইল রয়েছে যা টাইল লেআউটের পাশাপাশি গ্রাফিক এবং আকার, এনপিসি এবং সাধারণ স্টাফের তালিকা রাখে। একটি ফাইল যুক্ত করে গেমটিতে একটি নতুন টাউন ক্যাম যুক্ত করা হবে যা অন্যদের অবদান রাখার অনুমতি দেয় বা তাই পরিকল্পনা ছিল তবে ফাইলটি কিছুটা পূর্ণ এবং জটিল হয়ে উঠছে। যদি আমি আপনাকে বুঝতে পারি তবে আমি এই ফাইলটিতে নগরীতে যে ঘটনাগুলি ঘটতে পারে সেগুলি অগ্রগতির সন্ধানের জন্য পতাকা সহ রেখে দেব?
স্কিথ

@ স্কিথ হ্যাঁ, এটি একটি যুক্তিসঙ্গত পদ্ধতির মতো মনে হচ্ছে।
থ্রিডিভে

0

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

প্রতিটি মানচিত্রে বিভিন্ন স্তর রয়েছে। গ্রাফিকাল স্তরগুলি, যার মধ্যে বেশ কয়েকটি থাকতে পারে। বাধা স্তর। এবং তারপরে জোন স্তর রয়েছে। জোন স্তরটি এখানে গুরুত্বপূর্ণ is

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

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

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

* একটি সত্ত্বা স্তরও রয়েছে। সত্তা মোবাইল সংলগ্ন সক্রিয় অঞ্চলগুলির মতো কাজ করে।


আরপিজি গেম মেকার সিরিজে সিস্টেমটি বাছাই করা সিস্টেমের মতো মনে হচ্ছে। তবে যদি সেই টাইলটির 5 টি ভিন্ন ইভেন্ট থাকে তবে আপনি গল্পটি কতটা দূরে রেখেছেন তার উপর ভিত্তি করে?
স্কিথ

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

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