2 ডি টাইল ভিত্তিক গেমটিতে স্ক্রোলিংয়ের জন্য একটি ভাল পদ্ধতি কী?


9

আমি স্ক্রিনে টাইলগুলি আঁকতে D3DXSPRITE মোড়কের সাথে ডাইরেক্ট 3 ডি ব্যবহার করছি। আমার একটি টাইল ক্লাস রয়েছে যার মধ্যে সংঘর্ষ এবং টাইল টাইপের মতো সদস্য রয়েছে তবে আমার কাছে টাইলগুলির একটি অ্যারে রয়েছে have

টাইল গ্রিড [256] [256];

কোনটি আরও ভাল পদ্ধতি হতে পারে?

পর্দার কেন্দ্রে প্লেয়ারটি আঁকুন এবং মানচিত্র যেখানে আঁকবে সেখানে অফসেট করুন।

ক্যামেরা নিম্নলিখিত সঙ্গে প্লেয়ার সরান।

আমি প্রথম পদ্ধতিটি ব্যবহার করছিলাম, তবে আপনি যখন মানচিত্রের উপরের বাম প্রান্তে পৌঁছবেন এবং অন্য খেলোয়াড় / শত্রুরা যখন মানচিত্রে অবস্থান করবেন এবং একই সময়ে চলবেন তখন এটি সত্যিই জটিল হয়ে উঠবে

আমি যদি ক্যামেরাটি প্লেয়ারকে অনুসরণ করি তবে আমি কি প্রতিটি গ্রিড টাইলের জন্য স্প্রিটব্যাচ-> অঙ্কন (...) কল করতে পারি যদিও কয়েকজনই স্ক্রিনে ফিট করতে পারে?

উত্তর:


4

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


আপনি সম্ভবত সেই স্প্রাইটগুলি আঁকতে কোড লিখতে চাইছেন যা দৃশ্যমান, বিশেষত যদি আপনি দেখতে পান যে আপনার গ্রিডের আকার বাড়ানো দরকার।

2

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

যেহেতু আপনি 2 ডি তে কাজ করছেন অন্য একটি ভাল টিপ হ'ল কিছু স্থানিক পার্টিশন করা সহজতম উপায় হ'ল ভার্চুয়াল ওয়ার্ল্ড গ্রিড সিস্টেম তৈরি করা, এটি আপনাকে প্রতিটি টালি প্রতিটি টাইলের ভিত্তিতে স্প্রাইটস এবং অন্যান্য সংস্থানগুলি যুক্ত করে স্বতন্ত্রভাবে পরিচালনা করতে দেয়, সুতরাং সংক্ষেপে প্রক্রিয়াটি হবে:

  • কিছু টাইল শ্রেণি তৈরি করুন যা টাইলের সীমানা স্থানাঙ্ক রাখতে পারে এবং নির্দিষ্ট টাইলের যে কোনও সংস্থান প্রয়োজন হতে পারে (স্প্রাইটস, শত্রু ইত্যাদি))

  • আপনার বিশ্বের আকার সম্পর্কে সিদ্ধান্ত নিন এবং একটি 2D অ্যারে তৈরি করুন (আপনি একটি মাত্রা ব্যবহার করতে পারেন এবং এটি 2D হিসাবে অ্যাক্সেস করতে পারেন) প্রতিটি যার সাথে সম্পর্কিত সমস্ত সংস্থান দিয়ে আপনার বিশ্বের কিছুটা প্রতিনিধিত্ব করে।

  • খেলোয়াড়টি যে টালি আছেন এবং তার প্রতিবেশীরা কেবল সেই টাইল থেকে সম্পদগুলি আঁকুন।

গ্রিডের সাহায্যে গ্রিড শুরুর তুলনায় খেলোয়াড় কোন টাইলের অবস্থানের ভিত্তিতে এটি সহজেই আবিষ্কার করতে পারেন।

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


0

আমি একটি পৃষ্ঠ ব্যবহার। আমি একটি অফ স্ক্রিন পৃষ্ঠের উপরে পুরো বিশ্ব তৈরি করি এবং একটি এক্স এবং ওয়াই সমন্বিত রাখি। প্লেয়ারের নড়াচড়া করার সাথে সাথে আমি এগুলি পরিবর্তন করি এবং প্রতিটি ফ্রেম x এবং y ব্যবহার করে পৃষ্ঠ থেকে ব্যাকবফার পর্যন্ত 1028 x 768 আয়তক্ষেত্র আঁকে।

অন্যান্য লোকেদের মতো আমি তাদের একটি এক্স এবং y দিয়েছি এবং তারা যেমন খুশি তেমন বিশ্বজুড়ে তাদেরকে যেতে দেয়, অঙ্কন করার সময় আমি পরীক্ষা করে দেখি যে সেখানে x এবং y 1028 x 768 আয়তক্ষেত্রে রয়েছে এবং যদি সেগুলি আঁকেন (আমি লোকদের জন্য টেক্সচার ব্যবহার করি) ।

আমার পর্দার কেন্দ্রে প্লেয়ার রয়েছে এবং বিশ্বের প্রান্তটি পর্দার প্রান্তে পৌঁছেছে কিনা তা পরীক্ষা করে দেখুন। এই পরিস্থিতিতে প্লেয়ার পর্দাটি বিশ্বের প্রান্তে এবং কেন্দ্রের দিকে ফিরে যায় তখন পৃথিবী আবার চলতে শুরু করে। এটি কঠিন বলে মনে হচ্ছে এবং আমাকে কিছুটা সময় নিয়েছে তবে এটি করা খারাপ নয়।

আমি x৪ এক্স t৪ টাইল ব্যবহার করি এবং আমি এখন পর্যন্ত যে বৃহত্তম বিশ্বের ব্যবহার করেছি তা হ'ল 50 x 60 টাইল।

এটি সব সি ++ এর সাথে সরাসরি এক্সে করা হয়


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

@ ড্রাকির আমার ধারণা আপনি ভুল বুঝে গেছেন। কেবল বিশ্বের পর্দা বন্ধ করে দেওয়া হয়, অন্যান্য লোকের মতো জিনিসগুলি যখন প্রয়োজন হয় তখন ব্যাকারের বাফারে ট্র্যাক করা হয় এবং আঁকা হয়। এছাড়াও আমি নিজেকে 70 x 70 বিশ্বে বেশি করে দেখছি না। যখন আমি বিশ্বকে বলি যে আমি অঞ্চল বলতে চাই, তখন প্লেয়ার অফ স্ক্রিনের পৃষ্ঠটি পুনর্গঠন করা হলে এটি একটি শহরটি অন্ধকূপ বা কোনও বাড়ির অভ্যন্তর হতে পারে। হ্যাঁ এটি মেমোরি লাগে তবে আধুনিক টেরাবাইট ড্রাইভে 2 ডি টাইলগুলি এটিকে নগণ্য করে তোলে এবং মসৃণ স্ক্রোলিং এবং অ্যানিমেশনের জন্য মূল্য দিতে কয়েক সেকেন্ডের লোড করা একটি ছোট দাম। তবে হ্যাঁ আরও ভাল ও শক্ত উপায় রয়েছে :)
স্কিথ

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

@ ড্রাকির এটি জানতে আগ্রহী, আমি কখনই এটির মতো ভাবিনি। আমি দেখতে পেয়েছি যে এই উপায়টি আমাকে একটি মসৃণ স্ক্রোল দেয় যা আমি যদি গতিশীলভাবে নতুন টাইল আঁকাম যাতে আমার মনে হয় এটি ঠিক আছে তবে আমার এটি দেখতে হবে।
স্কিথ

আমি এমন একটি খেলায় কাজ করছিলাম যেখানে আমার 31x31 এর মানচিত্র ছিল তবে তারা পাশাপাশি পাশাপাশি সংযুক্ত ছিল। আমি অন্য কারও ইঞ্জিন থেকে কাজ করার চেষ্টা করছিলাম এবং তারা যে খেলোয়াড়টি চালু ছিল তার চারপাশে সমস্ত মানচিত্র আঁকবে; মোট নয়টি মানচিত্র। প্রতিটি মানচিত্রে কয়েকটি (আমার মনে হয় 6) স্তর ছিল। সুতরাং 31x31x9x6 = 51894 টাইল টানা হচ্ছে (সর্বাধিক; সমস্ত টাইল পূর্ণ ছিল না) প্রতিবার ব্যবহারকারী মানচিত্র পরিবর্তন করে। এটি আমার জন্য একটি বিশাল ধীর গতি ছিল, সুতরাং আমি প্লেয়ারের প্রান্ত পেরিয়ে প্লেয়ারের চারপাশে থাকা টাইলগুলি কেবল 1 টাইল (চলন্ত অবস্থায় আংশিক টাইলগুলি পরিচালনা করতে) আঁকতে অঙ্কনের রুটিনটি আবার লিখলাম।
রিচার্ড মার্স্কেল - ড্রাকির

0

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

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