সংস্করণ সহ একই গেমগুলিতে গেম কোড থেকে গেম ইঞ্জিনকে আলাদা করা


15

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

আমি মূল কোডটি গেম থেকে আলাদাভাবে সংস্করণিত করাতে চাই, যাতে যদি আমি বলি যে আমি গেম এ-তে পাওয়া একটি বাগ ফিক্স করি তবে ফিক্সটি গ বিতে উপস্থিত হবে will

আমি এটি পরিচালনা করার সর্বোত্তম উপায় সন্ধান করার চেষ্টা করছি। আমার প্রাথমিক ধারণাগুলি হ'ল:

  • একটি engineমডিউল / ফোল্ডার / যা কিছু তৈরি করুন , এতে সাধারণীকরণযোগ্য সমস্ত কিছু রয়েছে এবং বাকি খেলা থেকে এটি 100% স্বতন্ত্র। এটিতে কিছু কোড অন্তর্ভুক্ত থাকবে তবে গেমগুলির মধ্যে ভাগ করা জেনেরিক সম্পদও রয়েছে।
  • এই ইঞ্জিনটিকে নিজস্ব gitসংগ্রহস্থলে রাখুন , যা এ হিসাবে গেমসে অন্তর্ভুক্ত হবেgit submodule

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

কিছুটা গিট শাখার বিভিন্নতা ব্যবহার করা এটি পরিচালনা করতে কার্যকর হতে পারে, তবে আমার মনে হয় না এটি যাওয়ার সবচেয়ে ভাল উপায়।

কারও কাছে কিছু ধারণা, অভিজ্ঞতা আছে বা সে সম্পর্কে কিছু আছে?


আপনার ইঞ্জিনটি কোন ভাষায় রয়েছে? কিছু ভাষার ডেডিকেটেড প্যাকেজ ম্যানেজার রয়েছে যা গিট সাবমডিউলগুলি ব্যবহার করার চেয়ে আরও বেশি বোধগম্য হতে পারে। উদাহরণস্বরূপ, নোডজেএসের এনপিএম রয়েছে (যা গিট রেপোগুলিকে উত্স হিসাবে লক্ষ্য করতে পারে)।
ড্যান প্যান্ট্রি

জেনেরিক কোডটি কীভাবে কনফিগার করা যায় বা "আধা-জেনেরিক" কোডটি কনফিগার করতে হয় বা কোডটি কীভাবে আর্কিটেক্ট করা যায়, কীভাবে কোড ডিজাইন করবেন বা কী সম্পর্কে আপনার প্রশ্নটি কি?
ডঙ্ক

এটি প্রতিটি প্রোগ্রামিং ল্যাঙ্গুয়েজ এনভায়ারোমেন্টে পৃথক হতে পারে তবে আপনি কেবল কন্ট্রোল ভার্সন সফ্টওয়্যারকেই বিবেচনা করতে পারবেন না, তবে গেম কোড থেকে গেম ইঞ্জিনকে কীভাবে বিভক্ত করবেন, (প্যাকেজ, ফোল্ডার এবং এপিআই এর মতো) এবং পরবর্তীটিও জানেন start , নিয়ন্ত্রণ সংস্করণ প্রয়োগ করুন।
umlcat

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

উত্তর:


13

একটি ইঞ্জিন মডিউল / ফোল্ডার / যা কিছু তৈরি করুন, এতে সাধারণীকরণযোগ্য সমস্ত কিছু রয়েছে এবং বাকি খেলা থেকে এটি 100% স্বতন্ত্র। এটিতে কিছু কোড অন্তর্ভুক্ত থাকবে তবে গেমগুলির মধ্যে ভাগ করা জেনেরিক সম্পদও রয়েছে।

এই ইঞ্জিনটিকে তার নিজস্ব গিট সংগ্রহস্থলটিতে রাখুন, যা গিটকে একটি গিট সাবমডিউল হিসাবে অন্তর্ভুক্ত করা হবে

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

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

উত্স নিয়ন্ত্রণ এবং বাইনারিগুলিতে নোট

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


এগুলি প্রায়শই পরিবর্তন হয় না, তবে আমি এতে আগ্রহী। বাইনারি সংস্করণ সম্পর্কে আমি কিছুই জানি না। কী সমাধান আছে?
মলহারক

@ মালহরহাক আপনার মন্তব্যের জবাব দিতে সম্পাদিত।
ইঞ্জিনিয়ার

@ মালহরাক এই বিষয়টিতে একটি দুর্দান্ত তথ্য এখানে রয়েছে ।
ইঞ্জিনিয়ার

1
যতক্ষণ সম্ভব প্রকল্পে জিনিস রাখার জন্য +1 । সাধারণ কোড উচ্চতর জটিলতা মঞ্জুরি দেয়। একেবারে প্রয়োজন না হওয়া পর্যন্ত এড়ানো উচিত।
গুডডোর

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

6

এক পর্যায়ে একটি ইঞ্জিন গেম সম্পর্কে স্টাফকে বিশেষজ্ঞ এবং জানা উচিত। আমি এখানে একটি স্পর্শক উপর যেতে হবে।

একটি আরটিএসে সংস্থান করুন। একটি গেম থাকতে পারে Creditsএবং Crystalঅন্যটি MetalএবংPotatoes

আপনার ওও ধারণাটি সঠিকভাবে ব্যবহার করা উচিত এবং সর্বাধিক সন্ধান করা উচিত। কোড-পুনঃব্যবহারের। এটা পরিষ্কার যে Resourceএখানে একটি ধারণা বিদ্যমান।

সুতরাং আমরা সিদ্ধান্ত নিই সংস্থানগুলিতে নিম্নলিখিত রয়েছে:

  1. মূল লুপের মধ্যে একটি হুক যা তাদের বর্ধিত / হ্রাস করার জন্য
  2. বর্তমান পরিমাণ পাওয়ার একটি উপায় (একটি রিটার্ন দেয় int)
  3. নির্বিচারে বিয়োগ / যোগ করার একটি উপায় (প্লেয়ারগুলি সংস্থান স্থানান্তর, ক্রয় ....)

খেয়াল করুন যে একটির এই ধারণাটি Resourceকোনও খেলায় কিল বা পয়েন্ট উপস্থাপন করতে পারে! এটি খুব শক্তিশালী নয়।

এখন একটি খেলা সম্পর্কে চিন্তা করা যাক। পেনিগুলিতে লেনদেন করে এবং আউটপুটে দশমিক পয়েন্ট যুক্ত করে আমরা মুদ্রা রাখতে পারি। আমরা যা করতে পারি না তা হ'ল "তাত্ক্ষণিক" সংস্থান। "পাওয়ার গ্রিড উত্পাদন" বলুন

আপনাকে InstantResourceএকই ধরণের পদ্ধতির সাথে একটি ক্লাস যুক্ত করার অনুমতি দেয় । আপনি এখন সংস্থানগুলি দিয়ে ইঞ্জিনকে দূষিত করছেন (শুরু করছেন)।


সমস্যাটি

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

if(transfer.target == engine.getPlayerId()) {
    engine.hud.addIncoming("You got "+transfer.quantity+" of "+
        engine.resourceDictionary.getNameOf(transfer.resourceId)+
        " from "+engine.getPlayer(transfer.source).name);
}
engine.getPlayer(transfer.target).getResourceById(transfer.resourceId).add(transfer.quantity)
engine.getPlayer(transfer.source).getResourceById(transfer.resourceId).add(-transfer.quantity)

তবে এটি সত্যিই বেশ অগোছালো। এটি সাধারণ উদ্দেশ্য, তবে অগোছালো। ইতিমধ্যে যদিও এটি একটি চাপিয়ে দেয় resourceDictionaryযার অর্থ এখন আপনার সংস্থানগুলির নাম থাকতে হবে! এবং এটি খেলোয়াড় প্রতি, তাই আপনার আর দলের সংস্থান থাকতে পারে না।

এটি "অত্যধিক" বিমূর্ততা (আমি স্বীকৃত একটি উজ্জ্বল উদাহরণ নয়) এর পরিবর্তে আপনার এমন একটি বিন্দু আঘাত করা উচিত যেখানে আপনি স্বীকার করেন যে আপনার গেমটিতে খেলোয়াড় এবং স্ফটিক রয়েছে, তারপরে আপনি ঠিক রাখতে পারেন (উদাহরণস্বরূপ)

engine.getPlayer(transfer.target).crystal().receiveDonation(transfer)
engine.getPlayer(transfer.source).crystal().sendDonation(transfer)

এমন একটি শ্রেণি Playerএবং শ্রেণীর সাথে CurrentPlayerযেখানে অনুদানের স্থানান্তর / প্রেরণের জন্য CurrentPlayerএর crystalঅবজেক্টটি স্বয়ংক্রিয়ভাবে এইচইউডিতে স্টাফটি প্রদর্শন করবে।

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


চূড়ান্ত মন্তব্য

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

  1. "কোর" - এটি ইঞ্জিনের পাঠ্যপুস্তক সংজ্ঞা, এটি ইভেন্ট হুক সহ একটি দৃশ্য গ্রাফ, এটি শেডার এবং নেটওয়ার্ক প্যাকেট এবং প্লেয়ারগুলির একটি বিমূর্ত ধারণা নিয়ে কাজ করে
  2. "গেমকোর" - এটি গেমের ধরণের ক্ষেত্রে বেশ জেনেরিক তবে সমস্ত গেমের কাছে নয় - উদাহরণস্বরূপ আরটিএসের সংস্থানসমূহ বা এফপিএসগুলিতে গোলাবারুদ। গেমটির যুক্তি এখানে প্রবেশ করতে শুরু করে। আমাদের সূত্রগুলির ধারণাটি এখানেই ছিল। আমরা এই জিনিসগুলি যুক্ত করেছি যা বেশিরভাগ আরটিএস সংস্থার জন্য অর্থবোধ করে।
  3. "গেমলজিক" আসল গেমটি তৈরির ক্ষেত্রে খুব নির্দিষ্ট। তোমার মত নামের সাথে ভেরিয়েবল পাবেন creatureবা shipবা squad। ব্যবহার উত্তরাধিকার আপনি ক্লাস যে সব 3 স্তর জুড়ে পাবেন (উদাহরণস্বরূপ Crystal একটি হল Resource যা একটি হল GameLoopEventListener বলে)
  4. "সম্পদ" এগুলি অন্য কোনও খেলায় অব্যর্থ। উদাহরণস্বরূপ, অর্ধজীবন 2 এআই স্ক্রিপ্টগুলি একত্রিত করুন, তারা একই ইঞ্জিন সহ আরটিএসে ব্যবহৃত হবে না।

পুরানো ইঞ্জিন থেকে একটি নতুন গেম তৈরি করা

এটি খুব সাধারণ। ধাপ 1 হ'ল স্তর 3 এবং 4 কেটে ফেলা হয় (এবং গেমটি যদি সম্পূর্ণ ভিন্ন ধরণের হয়) ধরুন আমরা কোনও পুরানো আরটিএস থেকে আরটিএস তৈরি করছি। আমাদের কাছে এখনও সংস্থান রয়েছে, কেবল স্ফটিক এবং স্টাফ নয় - তাই স্তর 2 এবং 1 এর বেস ক্লাসগুলি এখনও বোঝায়, 3 এবং 4 তে উল্লিখিত সমস্ত স্ফটিক বাতিল করা যেতে পারে। সুতরাং আমরা কি। আমরা তবে যা করতে চাই তার রেফারেন্স হিসাবে এটি পরীক্ষা করতে পারি।


স্তর 1 এ দূষণ

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


শ্রেণিবদ্ধ স্তরসমূহ

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

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


1

জেনেরিক এবং সুনির্দিষ্ট মিশ্রিত সামগ্রীটি কীভাবে পরিচালনা করতে হবে তার জন্য আমার ব্যক্তিগত পরামর্শ হ'ল এটিকে গতিশীল করা। আমি উদাহরণ হিসাবে আপনার মেনু স্ক্রিন নেব। আপনি যা চেয়েছিলেন তা যদি আমি ভুল বুঝে থাকি তবে আপনি কী জানতে চেয়েছিলেন তা আমাকে জানান এবং আমি আমার উত্তরটি মানিয়ে নেব।

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

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

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

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