একটি 2 ডি প্ল্যাটফর্মারে "সময় নিয়ন্ত্রণ"


9

আমি একটি 2 ডি প্ল্যাটফর্মার তৈরি করছি যেখানে প্লেয়ারটি একটি বোতাম টিপতে পারে এবং স্তরটি পুনরায় আরম্ভ করতে পারে, কেবলমাত্র তাদের পূর্ববর্তী চরিত্রটি একই সময়ে স্তরটি চালাবে, যেমন তারা সময়মতো ভ্রমণ করে traveling

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

এটি কি এটি সেরা উপায়? কারও কি এর কোন অভিজ্ঞতা আছে?

ধন্যবাদ।


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

3
"এলোমেলো" অংশ সম্পর্কে ভাল পয়েন্ট। কোনও বীজের উপর ভিত্তি করে এর সংখ্যা তৈরি করে এমন একটি এলোমেলো জেনারেটর ব্যবহার নিশ্চিত করুন। তারপরে আপনার পুনরায় প্লে দিয়ে বীজ সংরক্ষণ করুন এবং সেই পুনরায় খেলতে খেলতে একই বীজটি ব্যবহার করুন।
বাম্মজ্যাক

তুমি ইহা কিভাবে করলে? আপনার কাজ কি?

উত্তর:


8

সম্পাদনা করুন:

দয়া করে এই প্রশ্নের @ ব্লুস্ক্রন এর উত্তর দেখুন; তিনি চলাচলের ভেক্টর বা অবস্থানের চেয়ে নিয়ন্ত্রণগুলি পুনরায় চালনার ক্ষেত্রে দুর্বলতার বিষয়ে বিশদ বর্ণনা করেন।

-

আপনি সঠিক পথে আছেন আমি যে পদ্ধতিটি ব্যবহার করব তা এখানে:

কন্ট্রোলার

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

actions[0].milliseconds = 400     actions[0].action = right pressed
actions[1].milliseconds = 1000    actions[1].action = jump pressed
actions[2].milliseconds = 1300    actions[2].action = jump released
actions[3].milliseconds = 2500    actions[3].action = jump pressed
actions[4].milliseconds = 3000    actions[4].action = jump released
actions[5].milliseconds = 5330    actions[5].action = right released

একজন কন্ট্রোলারের দুটি মোড থাকে:

  1. রেকর্ড: কীবোর্ড ইনপুট গ্রহণ করে। তালিকায় রেকর্ড ইনপুট। কীবোর্ডের রাজ্যের উপর ভিত্তি করে অক্ষর ইনপুট দেয় s
  2. রিপ্লে: কীবোর্ড ইনপুট উপেক্ষা করে। স্তরটি শুরু হওয়ার পরে মিলিসেকেন্ড অনুসারে তালিকার মাধ্যমে অগ্রসর হয়েছিল বর্তমান মুহুর্তে রেকর্ড করা কীবোর্ডের উপর ভিত্তি করে অক্ষর ইনপুট দেয় Hand

চরিত্র

যখন আপনার চরিত্রের অবজেক্টটি নির্মিত হয়, এটি নিজের জন্য একটি নতুন কন্ট্রোলার তৈরি করে। চরিত্রটি যে কোনও সময় দুটি মোডের একটিতে হতে পারে:

  1. সক্রিয়: কেবলমাত্র একটি সক্রিয় চরিত্র রয়েছে এবং এটিই আপনি নিয়ন্ত্রণ করেন। চরিত্রটি যখন অ্যাক্টিভ মোডে থাকে তখন এর নিয়ামকটি রেকর্ড মোডে থাকে। ডিফল্টরূপে যখন কোনও চরিত্রটি তৈরি করা হয় এটি সক্রিয় মোডে থাকে।
  2. ভূত: এটি হ'ল এটি আপনার অতীত ক্রিয়াকে পুনরায় প্রদর্শন করে। যখন কোনও চরিত্র ঘোস্ট মোডে প্রবেশ করে, তখন এটির উপস্থিতি পরিবর্তন হয় এবং এর নিয়ামককে রিপ্লে মোডে সেট করে।

মাত্রা

নতুনভাবে শুরু করা স্তর

আপনি স্তরটি শুরু করার সময় একটি একক অক্ষর তৈরি করুন। এখন স্তরটি শুরু হয় এবং প্লেয়ার তার কাজটি করে।

যখন সময় পুনরায় সেট করা হয়

স্তরটি পুনরায় সেট করা হলে তিনটি জিনিস করুন:

  1. ঘোস্ট মোডে প্রবেশ করতে বর্তমান সক্রিয় চরিত্রটিকে বলুন।
  2. একটি নতুন চরিত্র তৈরি করুন।
  3. সমস্ত অক্ষর তাদের পুনরায় সেট করতে কল করুন। এটি এগুলিকে কোনও চলন ছাড়াই প্রারম্ভিক অবস্থানে ফিরিয়ে রাখবে ইত্যাদি They তারা এগুলি পরিবর্তে তাদের কন্ট্রোলারদের বলবে কোনও কী চাপ না দিয়ে মিলিসেকেন্ড 0 এ পুনরায় সেট করতে।

তারপরে স্তরটি শুরু হয় এবং প্লেয়ার তার কাজটি করে।


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

8

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

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


1
+10 যদি আমি পারতাম। দুর্দান্ত বিবেচনা। মুভমেন্ট ভেক্টর বা পজিশন উভয়কে পুনরায় প্লে করা পছন্দসই প্রভাবের উপর নির্ভর করে ইনপুট রিপ্লে করার চেয়ে সেরা। ফ্রেমগুলির মধ্যে দশমিক মিলিসেকেন্ডের অসম্পূর্ণতাটি চলাচল এবং অবস্থানের সাথে কাজ করার সময় এটি ইনপুটটির চেয়ে বেশি জবাবদিহি করা সহজ।
doppelgreener

4

গেম রেকর্ডিং / রিপ্লে সিস্টেম / ইত্যাদি সম্পর্কিত অনেকগুলি বিষয় রয়েছে যা সম্ভবত আপনার অতীতের রুটথ্রসের মূল প্রস্তর হওয়া উচিত।

এখানে একটি: কীভাবে একটি রিপ্লে সিস্টেম ডিজাইন করতে হয়


0

কীবোর্ড ইনপুট রেকর্ডিং আপনার ক্ষেত্রে এটি কার্যকর নাও হতে পারে। আপনি তবে টাইমলাইনের সাহায্যে একটি স্প্লাইন তৈরি করতে পারেন। আপনি প্রয়োগ করতে হবে এমন বাহিনীর সাথে যদি আপনার কৌতূহল থেকেও সময় কেটে যায় আপনি তা আবার রিওয়াইন্ডও করতে পারেন

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