কোডে আমি কীভাবে একটি অর্থনীতি ভিত্তিক গেমের মডেল করব?


10

আমি একটি প্রাচীন সভ্যতার উপর ভিত্তি করে একটি অর্থনীতি গেম তৈরি করতে চাই। আমি কীভাবে এটি ডিজাইন করব তা নিশ্চিত নই। যদি আমি "স্পেস আক্রমণকারীদের" অনুলিপিটির মতো একটি ছোট গেমের সাথে কাজ করতাম তবে এটিকে কাঠামোগত গঠনে আমার কোনও সমস্যা হবে না:

  • মেইন কন্ট্রোল ক্লাস
  • গ্রাফিক্স ক্লাস
  • প্লেয়ার ক্লাস
  • শত্রু শ্রেণি

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


3
আপনি কোনও সত্ত্বা -উপাদান-সিস্টেমের কিছু ফর্ম ব্যবহার করতে চাইতে পারেন (এখানে প্রচলিত রেফারেন্সটি রয়েছে ) - সত্তাগুলি এগুলি এখুনি আঁকেন না (বিশেষত যদি আপনার প্রচুর পরিমাণ থাকে)।
ThorinII

9
আপনি কতটা ভয়াবহ, বিশৃঙ্খলাবদ্ধ এবং হ্যাক-একসাথে বেশিরভাগ "বড়" গেমস তা দেখে আপনি অবাক হয়ে যাবেন surprised এগুলি নির্ধারিত সময়সীমা এবং মাইলফলকগুলির চারপাশে নির্মিত। কেবল একটি গেম লিখুন এবং যা কিছু কাঠামো আপনাকে লিখতে হবে তা হ'ল এটি যদি এএএ গেমসের বেশিরভাগ অংশের চেয়ে ভাল না হয় তবে ভাল হতে চলেছে।
শান মিডলডিচ

এমনকি আপনি যদি পুরো বিকাশিত ইসিএসে না যান তবে ডুপ্লিকেট কোডটি না দেওয়ার পক্ষে এটি দুর্দান্ত, নিয়ামক সত্তাগুলি পুনরাবৃত্তি করে এবং রেন্ডারারকে কল করতে দেয় বা এমনকি রেন্ডারকে স্ক্যান করতে দেয়। 100 জায়গায় একটি ছোটখাটো কোড আপডেট করা ব্যথা।
মিকএলএইচ

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

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

উত্তর:


5

আমি কি এমন এক দেশ শ্রেণি তৈরি করব যাতে বেশ কয়েকটি শহর থাকে?

অবশ্যই।

শহরে কি অনেকগুলি বিল্ডিং ক্লাস থাকে, বেশিরভাগ লোকের ক্লাস থাকে?

অবশ্যই।

আমি কি এমন কোনও পথ অনুসন্ধান ক্লাস তৈরি করি যা খেলোয়াড়ের কাছাকাছি যেতে পারে?

অবশ্যই।

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

আপনি সাধারণভাবে ধারণাগুলি আপনার মাথায় নিয়ে গেছেন এবং কিছু সাধারণ নিয়ম অনুসারে এগুলি কোডে গোষ্ঠীভুক্ত করেছেন:

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

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

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


1

আপনি যা বর্ণনা করেছেন (প্রতিটি মূল ধরণের লজিকাল গেম অবজেক্টের জন্য একটি শ্রেণি) সাধারণ গেম হিসাবে নিখুঁত ধারণা দেয়। যদি এই টাইপটির খেলা লিখতে এটি আপনার প্রথমবার হয় তবে আমি এটি এইভাবে করার পরামর্শ দিচ্ছি।

কয়েকটি টিপস:

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

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

  • প্রোটোটাইপ ভিত্তিক অবজেক্ট মডেল - সমস্ত গেম অবজেক্টের জন্য একটি ক্লাস ব্যবহার করুন, এবং বৈশিষ্ট্য / বৈশিষ্ট্য এবং সংমিশ্রনের মাধ্যমে আপনার সমস্ত বস্তুর মডেল করুন। স্ট্যান্ডার্ড ওওপির চেয়ে অনেক বেশি নমনীয় / গতিশীল, তবে পরিচালনা করার জন্য কৌশলযুক্ত (বিশেষত, আপনি বোকা কিছু করলে সংকলক আপনাকে বেশি সাহায্য করবে না)। আমি এটি আমার ছোট রোগুয়েলাইক গেমের অত্যাচারী ( https://github.com/mikera/tyrant ) এ ভাল প্রভাব ফেলতে ব্যবহার করেছি
  • সত্তা উপাদান উপাদান - আপনার যদি এমন অনেক জটিল আচরণ থাকে যা আপনি বিভিন্ন ধরণের গেম অবজেক্টগুলিতে মিশ্রিত করতে এবং মেলাতে চান তবে ভাল। খুব শক্তিশালী, তবে সঠিকভাবে পাওয়া শক্ত।

0

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

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


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