কিভাবে একটি গেম ভ্রমণ সময় বাস্তবায়ন?


10

আমি ভাবছিলাম কীভাবে একটি গেমের মধ্যে সময় ভ্রমণের প্রয়োগ করা যায়। কোনও দুর্দান্ত জটিল কিছুই নয়, কেবল সময়-বিপরীত যা ব্রিডে রয়েছে তার মতো, যেখানে ব্যবহারকারী 30 সেকেন্ড বা যাই হোক না কেন দ্রুত ফরোয়ার্ড সময়কে রিভাইন্ড করতে পারে।

আমি ওয়েবে প্রচুর অনুসন্ধান করেছি, তবে আমার ফলাফলগুলি সাধারণত "এটি 3:00" বা টাইমার এবং এর মতো সময়কে ব্যবহার করার ক্ষেত্রে উল্লেখ করা হয়।

আমি কেবল 2 টি অ্যারে ব্যবহার করতে পারি তার মধ্যে একটি, প্লেয়ারের এক্স পজিশনের জন্য এবং অন্যটি প্লেয়ারের ওয়াই পজিশনের জন্য ব্যবহার করা এবং তারপরে সেই অ্যারেগুলির মাধ্যমে পুনরাবৃত্তি করা এবং দ্রুত / পুনরুদ্ধার সময়ের সাথে সাথে অক্ষরটি সেই অবস্থানে রেখে দেওয়া হয়েছিল। কাজ করতে পারে? যদি এটি কাজ করে, অ্যারেটি কত বড় হতে হবে এবং আমি কতক্ষণ প্লেয়ারের এক্স এবং ওয়াই সংরক্ষণ করতে পারি? যদি এটি কাজ না করে, আমি আর কি চেষ্টা করতে পারি?

আগাম ধন্যবাদ!


11
আপনি কি খবরটি পড়েন না ( ust.hk/eng/news/press_20110719-893.html )? তারা কেবল দেখিয়েছে যে সময় ভ্রমণ সম্ভব নয়। সুতরাং, কোড করা অসম্ভব।

সময়-ভ্রমণের জন্য আপনাকে একটি সম্ভাব্য শব্দার্থবিজ্ঞান চিন্তা করতে হবে, তারপরেই আপনি বাস্তবায়ন সম্পর্কে ভাবতে শুরু করতে পারেন।
পাওলো ইবারম্যান


2
নিজেকে কিছু ভেক্টর ম্যাথ শিখুন । আপনি যদি দুটি পৃথক অ্যারের প্রস্তাব দিচ্ছেন যা প্রস্তাব দেয় আপনি তাদের সাথে কখনও কাজ করেন নি। আমি গেমস প্রোগ্রামারের পক্ষে তারা বিষয়গুলি কতটা সরল করতে পারে তা জানার জন্য তাদেরকে গুরুত্বপূর্ণ মনে করি।
ডপপেলগ্রিনিয়ার

5
import universal.back2future.FluxCapacitor;
ধাক্কা

উত্তর:


6

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


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

4

কমান্ড প্যাটার্ন পড়ুন । এটি পূর্বাবস্থায় ফিরিয়ে আনার ক্রিয়া সরবরাহ করে (এবং পরে এগুলি পুনরায় করণের জন্য)) এটি কোনও জাহাজের অবস্থানের চেয়ে আরও বেশি কিছু পরিচালনা করতে পারে তবে খেলোয়াড়ের সমস্ত ক্রিয়াকলাপ নেয়।

তবে আমি মনে করি আপনার অ্যারে ধারণাটিও দুর্দান্ত।


সম্ভবত না একটি মহান ধারণা - ছাড়াও আরো মেমরি নিবিড় (প্রতি সময় আপনি তার অবস্থান থেকে একটি সত্তা এর বেগ যোগ করুন, আপনি যে একটি "কর্ম" হিসাবে স্টোরে প্রয়োজন) , এটা প্রায় কাছাকাছি প্রয়োজন , স্থায়ী দফা গণিত যেহেতু আপনি ভাসমান ব্যবহার আপনার অবস্থান / গতির জন্য পয়েন্ট, (x+v)-vসমান হতে পারে না x
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

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

3

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

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

আপনি যদি 30 সেকেন্ডের মূল্যমানের অতীতের ডেটা ধরে রাখতে চান, তবে আপনি স্থানটি প্রাক-বরাদ্দ করতে এবং একটি নির্দিষ্ট আকারের অ্যারে ব্যবহার করতে চাইলে আপনার ফ্রেম রেটটি জানতে হবে। আপনি যদি 10 ফ্রেম / সেকেন্ডে 30 সেকেন্ডে গেমটি রেন্ডার করেন তবে এটি 300 উপাদান।


2

GDCVault জন নিবন্ধন করে বক্তৃতা (স্রষ্টার হয়েছে বিনুনি তাদের সাইট নামক দিকে) বিনুনি মধ্যে ফিরে দেখা বাস্তবায়নের $ 3.95 জন্য। আমি বাজি ধরব এটিতে আপনার যা তথ্য চান তা রয়েছে;)

সম্পাদনা: সম্ভবত জাভাতে থাকবে না তবে ধারণাগুলি ধরে রাখা উচিত।


আপনি কি জানেন যে তারা খুব অনুলিপি বিক্রি করেন, না কেবল অডিও?
o0 '

সাইটের তাত্ক্ষণিক অনুসন্ধানের মাধ্যমে আমি কিছুই খুঁজে পেলাম না। আপনি কিছু ট্রান্সক্রিপশন সফ্টওয়্যার ব্যবহার করতে পারে ?
NoobsArePeople2

1

এরিক জে যেমন বলেছেন , রিং-বাফারে পয়েন্ট অবজেক্টের সংগ্রহ হিসাবে প্লেয়ারের অতীত অবস্থানগুলি সংরক্ষণ করা যুক্তিসঙ্গত মনে হয়।

তবে আমি বাফারটি প্রয়োগ করতে একটি সারি ব্যবহার করার পরামর্শ দেব । এটি অ্যারের তুলনায় আপডেট করা অনেক সস্তা এবং আপনার ফ্রেমের হার আগেই জানতে হবে না:

update():
   time_queue.push(player.positions)
   if current_time() - start_time > n:
       queue.pop()

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

update():
    time_queue.push({
        'pos': player.positions,
        'time': current_time()
    })
    first_entry = queue.peek()
    while current_time() - first_entry['time'] > n:
       queue.pop()
       first_entry = queue.peek()

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


1

মেমেন্টো নামে একটি নকশার প্যাটার্ন রয়েছে , আমার মনে হয় এটি ব্রিডের মতো গেমের জন্য একটি সূচনা পয়েন্ট

মেমেন্টো প্যাটার্ন হ'ল একটি সফ্টওয়্যার ডিজাইন প্যাটার্ন যা কোনও পূর্ববর্তী অবস্থায় কোনও বস্তু পুনরুদ্ধার করার ক্ষমতা সরবরাহ করে (রোলব্যাকের মাধ্যমে পূর্বাবস্থায় ফেরা)।

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

http://en.wikipedia.org/wiki/Memento_pattern

Adcional তথ্য এখানে: http://dofactory.com/Patterns/PatternMemento.aspx


2
এটি কীভাবে সাহায্য করবে তা দেখতে আমি ব্যর্থ। দেখে মনে হচ্ছে এটি একটি "তাত্ক্ষণিক-রোলব্যাক", যখন ওপি ব্রেডের মতো মসৃণ কিছু চেয়েছিল। আমি কিছু ভুল পড়তে পারে?
o0 '

এটি প্যাটার্নটি কোনও একক রোলব্যাকের উপর নির্ভর করে না, উদাহরণস্বরূপ, আপনি ক্রিয়াগুলির একটি "টাইমলাইন" তৈরি করতে পারেন। এখানে একটি Brazillian এর ব্লগ এই প্যাটার্ন যে ব্যবহার সম্পর্কে পোস্ট দেওয়া হল: abrindoojogo.com.br/padroes-de-projeto-memento এখানে ফ্ল্যাশ মধ্যে তৈরি একটি উদাহরণ আছে: abrindoojogo.com.br/files/fasteroids.swf সরান: তীর | অঙ্কুর: স্থান | পদক্ষেপগুলি রিওয়াইন্ড করুন: ব্যাকস্পেস
মার্সেলো অ্যাসিস

1

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

প্রতিটি এক্স ফ্রেম (এক্স এর নিম্ন মানের সাথে আরও সূক্ষ্ম ম্যানিপুলেশনের দিকে পরিচালিত করে), আপনি সেই মুহূর্তে গেমওয়ার্ল্ডের একটি "স্ন্যাপশট" নিয়ে যান এবং গেমের সময়কালের সাথে এটি যুক্ত করেন।

গেমটি সাধারণত খেলতে গিয়ে সময়-এগিয়ে, প্রতিটি ইনপুট একটি প্রতিক্রিয়া ভবিষ্যতের কিছু সময় স্ন্যাপশট সেটটিতে অবদান রাখে।

গেম ওয়ার্ল্ড তারপরে বর্তমান সময়ে স্ন্যাপশট এবং ভবিষ্যতে স্ন্যাপশট এক্স ফ্রেমের মধ্যে পুনরাবৃত্তি করে।

তারপরে, যখন আপনি সময়টি বিপরীত করতে চান, কেবল সময়ের দিকটি পিছনের দিকে সেট করুন, যাতে এটি অতীতের বর্তমান এবং স্ন্যাপশট এক্স ফ্রেমের মধ্যে পুনরাবৃত্তি হয় (ভবিষ্যতের স্ন্যাপশট তৈরির ক্ষমতা অক্ষম করার সময়)।


স্ন্যাপশটের গ্র্যানুলারিটি সম্পর্কে বিষয়টির জন্য +1।
ওমর কোহেজি

0

আপনি কেবল গেমের ভার্চুয়াল সময়টিকে অন্য জায়গার মতো মাত্রা হিসাবে বিবেচনা করতে পারেন। সুতরাং বাইরে থেকে সময় ভ্রমণ কী গেমের ভার্চুয়াল মহাবিশ্বের একটি সাধারণ n + 1 মাত্রিক গতিবিধি।

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

গেমের মহাবিশ্বের যে কোনও সময় স্থানাঙ্কের স্থিতি গণনা করতে আপনার এইভাবে অনেক কম মেমোরি দরকার।


আমি অন্য একটি মন্তব্যে যেমন উল্লেখ করেছি, ভিডিও গেমগুলিতে পদার্থবিজ্ঞান সাধারণত সময়-বিপরীতমুখী হয় না কারণ ভাসমান-পয়েন্ট সংখ্যা ব্যবহার করার সময়, এর (x+v)-vসমান হতে পারে নাx
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

0

ধরা যাক একটি সত্তার একটি বেগ, আবর্তন, এক্স এবং y অবস্থান রয়েছে। এগুলি, ত্বরণের সাথে, মৌলিক গতিবিধিটি বলে, মানগুলি, আপনি যা-ই বলুন না কেন। আপনি দুটি উপায়ে ডেটা সংরক্ষণ করতে পারেন:
1. ঘূর্ণন, এক্স এবং y অবস্থান
সংরক্ষণ করুন ২ ঘূর্ণন, এক্স বেগ এবং y বেগ সংরক্ষণ করুন

আপনার যদি একটি নির্দিষ্ট গতি থাকে তবে আপনি কেবলমাত্র ঘূর্ণন বা সংরক্ষণ করতে পারবেন বা উভয় অক্ষের জন্য কেবল একটি বেগ সংরক্ষণ করতে পারেন।

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

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

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

আপনি যদি অবজেক্টগুলি ধ্বংস করেন তবে সেগুলি নিশ্চিত করে মনে রাখবেন, যাতে আপনি আপনার পরিষ্কার বন্ধু মিঃ গার্বেজকে চাপ না দিয়ে থাকেন;)

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