কোনও সত্তা সিস্টেমের ফ্রেমওয়ার্কে টাইলম্যাপস?


12

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

সত্তা সিস্টেম ফ্রেমওয়ার্ক সম্পর্কে আমার বোঝার বিষয়টি এখনই (আমি এখনও এটি পুরোপুরি বুঝতে পেরেছি কিনা তা নিশ্চিত নয়):

  • সত্ত্বা আইডি ছাড়া কিছুই নয়
  • উপাদানগুলি কোনও সত্তা উপাদান পুলে যুক্ত বোবা ডেটা ছাড়া কিছুই নয়
  • সিস্টেমগুলি আপডেট ফাংশন যা সিস্টেমের উপাদান স্বাক্ষরের সাথে মেলে এমন প্রতিটি সত্তাকে পরিচালনা করতে বিশ্বের সাথে সংযুক্ত থাকে

যদি আমার বোঝাপড়াটি সঠিক হয় তবে এই কাঠামোটিতে টাইলম্যাপ এবং এআই আচরণগত গাছগুলি যুক্ত করে ধারণাটি তৈরি করতে আমার বেশ কিছুটা সমস্যা হচ্ছে। ভবিষ্যতে আমি এআই সম্পর্কে জিজ্ঞাসা করব।

এই কাঠামোর মধ্যে একটি টাইলম্যাপ তৈরি করা উচিত? অথবা এটি কোনও টাইলম্যাপ সম্পাদক দিয়ে তৈরি করা সহজ করার জন্য আলাদা রাখা উচিত?

যদি টাইলম্যাপটি এই কাঠামোর মধ্যে তৈরি করা উচিত, তবে প্রতিটি টাইল কি আলাদা সত্তা? আর কোনও সিস্টেমের টাইলম্যাপ? নাকি টাইলম্যাপটি নিজেই একক সত্তা যার উত্তরাধিকারসূত্রে নির্মিত?

যদি টাইলম্যাপটি গতিময় হয়, তবে বাহ্যিক টাইলম্যাপের বিরুদ্ধে সত্তা সনাক্তকারী সংঘর্ষের সর্বোত্তম উপায় কী হবে?

আমি বুঝতে পেরেছি যে আমি তালিকাভুক্ত একাধিক বিকল্পগুলি সঠিক হতে পারে তবে অতীতে কেউ যদি এটি করে থাকে তবে তারা আমার বিভ্রান্তির বিষয়ে কিছুটা আলোকপাত করতে সক্ষম হতে পারে। হয়তো অন্য কোন বিকল্প আছে যা আমি ভেবে দেখিনি?

ধন্যবাদ.


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

আরে, কেবলমাত্র বাইট 55 এর পরামর্শটি মেনে চলেছেন: উপাদানগুলি সত্যই বোবা ডেটা ধারক হওয়ার দরকার নেই। কখনও কখনও এটি কার্যকর হবে যদি তারা আসলে সেই ডেটা পরিচালনা করতে পারে; ভেক্টর, উদাহরণস্বরূপ।
jcora

আমি এই পরামর্শটিও সত্যিই পছন্দ করি। টাইলম্যাপ সহায়কদের ডেটা থেকে আলাদা না করে বা একাধিক উপাদান / সত্তায় টাইলম্যাপটি ভেঙে না ফেলে আমি সত্তা কাঠামোর মধ্যে টাইলম্যাপ যুক্ত করতে পারি।
স্পেন্সার মারার

টাইলম্যাপটি অন্য একটি উপাদান, এবং সংঘর্ষের সিস্টেম এবং রেন্ডারার সিস্টেম টাইলম্যাপ এবং টাইলম্যাপের রেন্ডারিংয়ের সাথে সংঘর্ষগুলি পরিচালনা করে
কিকাইমারু

উত্তর:


8

আমি ইতিমধ্যে কিছুক্ষণের জন্য বিকাশে পরে একটি সত্তা উপাদান কাঠামো (আর্টেমিসের অনুরূপ) বাস্তবায়ন করেছি, তবে আমি মনে করি না যে খালি স্লেট থেকে শুরু করে আমি কিছু আলাদাভাবে করতাম।

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

সংঘর্ষ সনাক্তকরণ বাঁধা খুব কঠিন নয় hard আপনার পৃথিবীতে সম্ভবত এমন isSolidAt(x,y)ধরণের পদ্ধতি রয়েছে যা আপনার সংঘর্ষের সিস্টেমটি ব্যবহার করবে। সততা, আমি এটি ইতিমধ্যে আজ আগেই বলেছি অন্যরকম উত্তরে , যা আপনার কাছে সর্বাধিক বোধ করে তা করুন। আপনি টাইল মানচিত্র পৃথক করে বা সত্তা তৈরি করে কোনও নিয়ম ভঙ্গ করছেন না। আপনি যেদিকে মাথা ঘুরিয়ে রাখতে পারেন তা হ'ল সর্বোত্তম। আমার জন্য, এটি বিশ্বকে পৃথক করে রেখেছিল এবং সমস্ত কিছু সত্তা তৈরি করেছিল।


1
বলুন আমার মানচিত্র হয় একটি সত্তা। অন্য সত্তা কীভাবে মানচিত্রের isSolidAtপদ্ধতিতে অ্যাক্সেস করতে যাবেন ?
জেরার্ডো মার্শেট

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

4

আমি সত্তায় পৃথক উপাদান হিসাবে টাইলম্যাপ যুক্ত করেছি (সমস্ত টাইল সহ) এবং টাইল মানচিত্রের জন্য পৃথক রেন্ডারারও রয়েছে, তাই আমি এটি 3 ডি বা 2 ডি রেন্ডার করতে পারি। সত্তা হিসাবে সমস্ত টাইলস তৈরি করা ব্যয়বহুল হিসাবে সম্ভব।

এরকম কিছু:


Entity e("map");
e.addComponent(new Tilemap("1.xml"));
e.addComponent(new TilemapRenderer2d(graphics));

tile map is something like that
class Tilemap
{
  array of tiles;
  getTileAtPosition(); 
  isWalkable ; etc;
}

class ITilemapRenderer
{}

class TilemapRenderer2d
{
draw() 
{ 
  foreach (tile in owner()->component()->tiles()) 
  {
    if (tile == ground) ground_sprite->draw() ....
  }
}

যুক্তি থেকে অঙ্কন পৃথক করতে সুবিধা হ'ল এমভিসি প্যাটার্নের বেস ধারণা


1
পুরো টাইলম্যাপ একটি একক উপাদানের মধ্যে রয়েছে? এটি কোনওরকম গেমের পরিবেশ সত্তা / মাস্টার সত্তার সাথে সংযুক্ত রয়েছে? আমি টাইলম্যাপ উপাদান থেকে রেন্ডার-এআর পৃথক করে বেশ বড় লাভ দেখতে পাচ্ছি।
স্পেন্সার মারার

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