পুরানো গেমগুলিতে ডেটা স্ট্রাকচার


10

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

উদাহরণস্বরূপ: যখন একক কয়েন স্ক্রিনে উপস্থিত হয় তারা কীভাবে সংরক্ষণ করা হয়? প্রোগ্রামাররা কি কেবল অ্যারে ব্যবহার করেছিল? অথবা সম্ভবত তারা লিঙ্ক-তালিকা ছিল?

চিয়ার্স!

সম্পাদনা : আমি বিভিন্ন পন্থায় আগ্রহী ... অগত্যা সর্বজনীন পদ্ধতির দরকার নেই।

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

// statically allocated arrays (max number of coins is 4)
int coinsXs[4] = {0, 0, 0, 0};
int coinsYs[4] = {0, 0, 0, 0};

// bitset that keeps track of which coins are active
int coinsActive = 0;

// ...

// update the active coins in an update function
for(int i = 0; i < 4; i++){
    if(coinsActive & (1 << i)){
        // update ith coin
    }
 }

2
সর্বজনীন উত্তর নেই; এটি প্রদত্ত প্রোগ্রামার কীভাবে কোনও প্রদত্ত সমস্যার সমাধান সমাধান করে তা নেমে আসে।
এড এস

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

ভাল যুক্তি. স্থির বরাদ্দ সংগ্রহ বনাম গতিশীল বরাদ্দ সংগ্রহ সম্পর্কে আমি সত্যিই কৌতূহলী
মিঃডাটাবেস

1
কি নির্দিষ্ট সমস্যা না আপনি আছে? আপনি কেন পুরানো গেমগুলি যত্নশীল হন?
টেট্রাড

2
আপনার দ্বিতীয় সম্পাদনায় আপনি যা পেয়েছেন তা হ'ল "অ্যারে কাঠামো" লেআউটের উদাহরণ, যা আধুনিক গেমসেও সাধারণ থাকে কারণ এর মধ্যে সমান্তরালতা এবং সিমডি অপারেশনের সুবিধা রয়েছে। : সোনি কিভাবে ঐতিহ্যগত সি ++ স্ট্রাকচারিং তথ্য প্রণালী গুরুতর খরচ জন্য perf লুকানো থাকতে পারে উপর বছর দুয়েক আগে একটি উপস্থাপনা করেনি research.scee.net/files/presentations/gcapaustralia09/...
Crashworks

উত্তর:


13

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

পার্থক্যটি হ'ল এসটিএল এর আগে, এবং পারফরম্যান্সের সাথে এতটাই সমালোচনামূলক, আমাদের সাধারণত কাঠামো এবং অ্যালগরিদমগুলি নিজেরাই লিখতে হত!

ডেভিড Braben করেনি একটি মজার বক্তৃতা 2011 GDC যেখানে তিনি পাগল ঠাট তিনি মাপসই ব্যবহার করা সব কথা বলেছেন এ এলিট একটি সম্মুখের বিবিসি মাইক্রো 1984 সালে GDC ভল্টের বিনামূল্যে জন্য আপনি এটি দেখতে পারেন


কুল। আপনি কি গতিশীল বরাদ্দ অ্যারে ব্যবহার করেছেন? নাকি বেশিরভাগের স্থির আকার ছিল? আমি পরিস্থিতি সম্পর্কে আগ্রহী যেখানে বলি যে পাঁচটি মুদ্রা অন স্ক্রিনে উপস্থিত হবে এবং প্লেয়ার তাদের সংগ্রহ না করা অবধি স্ক্রিনে থাকবে (বা তারা স্ক্রিনটি স্ক্রোল করে না)।
মিস্টার ডেটাবেস 20'11

2
@ এমআরডিটিবেসস - যেখানেই সম্ভব স্থির বরাদ্দ। আপনার বর্ণনার মতো কেসগুলির জন্য, আমরা প্রায়শই একটি স্থায়ীভাবে বরাদ্দকৃত অ্যারে থাকতাম যেমন 32 টি সম্ভাব্য কয়েন বিদ্যমান থাকতে পারে। কয়েন যখন বিশ্বে আসে তখন আমরা অ্যারেতে একটি জায়গা পূরণ করতাম। যখন তারা চলে গেল, আমরা এটিকে ফাঁকা করব। গতিশীল বরাদ্দ অনুপলব্ধ ছিল না, আমরা কেবল এটি ব্যবহার করা এড়িয়ে চলেছি কারণ যখন আপনি কেবলমাত্র 2MB র্যাম পেয়েছেন তখন আপনার প্রোগ্রামটি ধ্রুব স্মৃতিতে চালিত হওয়ার গ্যারান্টি দেওয়া দরকার!
ক্রশ ওয়ার্কস

কুল। আমি অনুরূপ কিছু করি (প্রশ্নের # 2 সম্পাদনা দেখুন)। আমার আপডেট ফাংশনে আমি ম্যাক্সনমকুইনগুলি if(coinsActive)লুপ করে আপডেট করার আগে "সাইনসএকটিভ" বিটসেটটি পরীক্ষা করি। এইভাবে শূন্য কয়েন সক্রিয় থাকলে লুপটি সম্পূর্ণভাবে এড়িয়ে চলেছি।
মিস্টার ডেটাবেস

জিডিসি ভল্ট লিঙ্কের কারণে +1। পিটার মলিনিক্সের পোস্টমর্টেম পপোলাস টকটি অবশ্যই আমার দেখা সবচেয়ে হাস্যকর কথা হতে হবে।
ট্র্যাভিসজি

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

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