আমার নিজের দৃশ্যের গ্রাফ ঘূর্ণায়মান


23

হ্যালো গেম ডেভলপমেন্ট এসই!

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

এখনও অবধি আমি কিছু বেসিক আই / ও, একটি উইন্ডো (ওহ তাই অভিনব এফ 11 ফুলস্ক্রিন কী সহ) অর্জন করার জন্য অবশ্যই জিএলএফডাব্লু ব্যবহার করেছি এবং অবশ্যই একটি ওপেনএল প্রসঙ্গে। আমি ওপেনগিএল এক্সটেনশনের বাকী অংশগুলি প্রকাশ করতে GLEW ব্যবহার করেছি কারণ আমি উইন্ডোজ ব্যবহার করছি এবং আমি ওপেনজিএল 3.0+ সমস্ত ব্যবহার করতে চাই।

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

তারপরে আমরা ক্রিসমাস গাছে ঝুলন্ত অলঙ্কারগুলির মতো এই অতিরিক্ত সমস্ত জিনিসগুলিতে যুক্ত করেছি, কিছু অলঙ্কারগুলি চমৎকার সরস স্টাইক এবং কিছু পুরো লাইভ গরু।

সাদৃশ্যটি অনুসরণ করে, আমি স্টেক, একটি দৃশ্যের গ্রাফটি কী হতে হবে তার মাংস চাই, অতিরিক্ত কোডের গাদা বা কোনও গোটা গরু না রেখে like

সুতরাং এই বিষয়টি মনে রেখে আমি নিজেকে ভাবছি যে কোনও দৃশ্যের গ্রাফটি কী হওয়া উচিত এবং কীভাবে একটি সাধারণ দৃশ্যের গ্রাফটি বাস্তবায়ন করা উচিত? আমার এখন পর্যন্ত যা আছে তা এখানে ...

একজন মা-বাবা, এন-বাচ্চাদের গাছ বা ডিএজি যা ...

  • গেম অবজেক্ট ট্রান্সফর্মেশনগুলির ট্র্যাক রাখা উচিত (অবস্থান, আবর্তন, স্কেল)
  • অপ্টিমাইজেশনের জন্য রেন্ডার রাজ্যগুলি রাখা উচিত
  • হতাশার ভিউয়ের মধ্যে না রেখে বস্তুগুলিকে কুলিংয়ের একটি উপায় সরবরাহ করা উচিত

নিম্নলিখিত বৈশিষ্ট্য সহ ...

  • সমস্ত নোডকে উপস্থাপনযোগ্য হিসাবে বিবেচনা করা উচিত (এমনকি তারা রেন্ডার না করলেও) এর অর্থ তারা ...

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

  • কোনও নোডের জ্যামিতি / শেডার / জমিনের ডেটা সরাসরি রাখা উচিত নয়, পরিবর্তে নোডগুলি ভাগ করা বস্তুগুলিতে নির্দেশ করা উচিত (সম্ভবত কোনও রিসোর্স ম্যানেজারের মতো কিছু সিঙ্গলটন অবজেক্ট দ্বারা পরিচালিত)।

  • দৃশ্যের গ্রাফগুলি অন্যান্য দৃশ্যের গ্রাফগুলিকে (সম্ভবত একটি প্রক্সি নোড ব্যবহার করে) উল্লেখ করতে সক্ষম হওয়া উচিত , যাতে এই জাতীয় পরিস্থিতিগুলির জন্য একাধিক ডেটা যোগ না করে জটিল মাল্টি-জাল মডেল / অবজেক্টগুলি দৃশ্যের গ্রাফের চারপাশে অনুলিপি করা যায়।

আমি আমার বর্তমান নকশা সম্পর্কে কিছু মূল্যবান প্রতিক্রিয়া আশা করি। এটি কার্যকারিতা অনুপস্থিত? একটি আরও ভাল উপায় / নকশা প্যাটার্ন আছে? আমি কি কিছু বৃহত্তর ধারণাটি হারিয়েছি যা কিছুটা সাধারণ 3 ডি গেমের জন্য এই ডিজাইনে অন্তর্ভুক্ত করা প্রয়োজন? প্রভৃতি

ধন্যবাদ, -কোডি

উত্তর:


15

ধারণাটি

মূলত, একটি দৃশ্যের গ্রাফ দ্বি-নির্দেশিত অ্যাসাইক্লিক গ্রাফ ছাড়া আর কিছুই নয় যা স্থানিক সম্পর্কের স্তরক্রমিক-কাঠামোগত সেট উপস্থাপন করে।

উল্লিখিত হিসাবে বন্য মধ্যে ইঞ্জিনগুলি অন্যান্য গুডিকে দৃশ্যের গ্রাফে অন্তর্ভুক্ত করে। আপনি দেখতে পাচ্ছেন যে মাংস বা গরু সম্ভবত আপনার ইঞ্জিন এবং গ্রন্থাগারগুলির সাথে আপনার অভিজ্ঞতার উপর নির্ভর করে।

এটি হালকা ওজনের রাখা

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

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

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

হায়ারারচি নির্মাণ

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

রেন্ডার সম্পর্কিত যুক্তি এড়িয়ে চলুন

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

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

একটি চূড়ান্ত নোট ...

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


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

1
@ কোডি স্মিথ, খুশী হয়েছে নির্লজ্জ প্লাগ, তবে আমি একটি কাঠামো বজায় রাখি যা এসওসি / এমভিসি সম্পর্কিত। এটি করতে গিয়ে, আমি শিল্পের আরও প্রচলিত শিবিরের সাথে আঘাত করতে এসেছি, যারা দৃ ins়ভাবে বলেন যে সবকিছুই একটি কেন্দ্রীয়, একচেটিয়া বস্তুতে থাকা উচিত। তবে এমনকি তারা সাধারণত আপনাকে বলত - আপনার রেন্ডারিংটি আপনার দৃশ্যের গ্রাফ থেকে আলাদা রাখুন। এসইসি / এসআরপি এমন একটি জিনিস যা আমি যথেষ্ট জোর দিতে পারি না - আপনার প্রয়োজনের তুলনায় কোনও একক শ্রেণিতে কখনও বেশি যুক্তি যুক্ত করবেন না। এমনকি যদি আপনি আমার মাথায় একটি বন্দুক রাখেন তবে আমি একই ক্লাসের মিশ্র যুক্তিগুলির তুলনায় জটিল ও ও উত্তরাধিকার শৃঙ্খলার পক্ষেও চাইতাম!
ইঞ্জিনিয়ার

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

এই সম্পর্কে আবার ব্রাউজ করার সময় @ কোডি স্মিথ দ্রুত চিন্তা করেছিলেন। সাধারণভাবে জিনিসগুলি decoupled রাখা ভাল। আপনার কোডবেস মডেল-নিয়ামক যে বস্তু রেন্ডারিং ভোগ করতে বিভিন্ন ধরনের জন্য, যাইহোক, এটা হয় আপনি সংগ্রহ রাখার জন্য জরিমানা Renderableগুলি ঐ কোর মডেল-নিয়ামক বস্তু অভ্যন্তরীণভাবে (যা একটি ইন্টারফেস অথবা বিমূর্ত ক্লাস হয়)। এর ভাল উদাহরণ হ'ল সত্তা বা ইউআই উপাদান। সুতরাং আপনি কেবলমাত্র সেই নির্দিষ্ট কোর অবজেক্টের সাথে প্রাসঙ্গিকভাবে কেবলমাত্র সেইগুলি সরবরাহ করতে পারবেন - প্রয়োগের নির্দিষ্টকরণ ছাড়াই যা সত্তা শ্রেণিকে দূষিত করবে, সুতরাং ইন্টারফেসের ব্যবহার।
ইঞ্জিনিয়ার

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