এইচটিএমএল 5 ক্যানভাসে আঁকার জন্য 2D অ্যারেতে পাঠ্য-মানচিত্র পরিচালনা করা হচ্ছে


46

সুতরাং, আমি কেবল মজাদার জন্য একটি HTML5 আরপিজি তৈরি করছি। মানচিত্রটি একটি <canvas>(512px প্রস্থ, 352 px উচ্চতা | 16 টি টাইল জুড়ে, 11 টাইল উপরে থেকে নীচে)। ছবি আঁকার আরও কার্যকর উপায় আছে কিনা তা আমি জানতে চাই <canvas>

এই মুহূর্তে আমার এটি কেমন আছে তা এখানে।

টাইলস কীভাবে লোড করা হয় এবং মানচিত্রে আঁকা হয়

Image()টুকরাটি ব্যবহার করে মানচিত্রটি টাইলস দ্বারা আঁকা হচ্ছে (32x32) । ইমেজ ফাইলগুলি একটি সাধারণ forলুপের মাধ্যমে লোড হয় এবং একটি অ্যারেতে tiles[]ব্যবহার করা হয় যা ব্যবহার করার জন্য পয়েন্ট করা হয় drawImage()

প্রথমত, আমরা টাইলগুলি লোড করি ...

এখানে চিত্র বর্ণনা লিখুন

এটি এখানে কীভাবে করা হচ্ছে তা এখানে:

// SET UP THE & DRAW THE MAP TILES
tiles = [];
var loadedImagesCount = 0;
for (x = 0; x <= NUM_OF_TILES; x++) {
  var imageObj = new Image(); // new instance for each image
  imageObj.src = "js/tiles/t" + x + ".png";
  imageObj.onload = function () {
    console.log("Added tile ... " + loadedImagesCount);
    loadedImagesCount++;
    if (loadedImagesCount == NUM_OF_TILES) {
      // Onces all tiles are loaded ...
      // We paint the map
      for (y = 0; y <= 15; y++) {
        for (x = 0; x <= 10; x++) {
          theX = x * 32;
          theY = y * 32;
          context.drawImage(tiles[5], theY, theX, 32, 32);
        }
      }
    }
  };
  tiles.push(imageObj);
}

স্বাভাবিকভাবেই, যখন কোনও খেলোয়াড় কোনও গেম শুরু করে তখন তারা শেষ ম্যাপটি লোড করে। তবে এখানকার জন্য, এটি একটি সমস্ত-ঘাসের মানচিত্র।

এখনই, মানচিত্রগুলিতে 2D অ্যারে ব্যবহার করা হয়েছে। এখানে একটি উদাহরণ মানচিত্র।

[[4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 1, 1, 1], 
[1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 1, 13, 13, 1, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 1, 13, 13, 1, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 1, 13, 13, 1, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 13, 13, 13, 1, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 13, 13, 11, 11, 11, 13, 13, 13, 13, 13, 13, 13, 1], 
[13, 13, 13, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 1], 
[1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1]];

আমি একটি সাধারণ ifকাঠামো ব্যবহার করে বিভিন্ন মানচিত্র পাই । উপরের 2d অ্যারেটি একবার হয়ে গেলে returnপ্রতিটি অ্যারেতে সংশ্লিষ্ট নম্বরটি Image()ভিতরে সঞ্চিত অনুযায়ী আঁকা হবে tile[]। তারপর drawImage()ঘটতে এবং অনুযায়ী আঁকবে xএবং yএবং বার এটি দ্বারা 32সঠিক উপর আঁকা x-yতুল্য।

একাধিক মানচিত্রের স্যুইচিং কীভাবে ঘটে

আমার খেলা সঙ্গে, মানচিত্র পাঁচটি জিনিস ট্র্যাক রাখতে আছে: currentID, leftID, rightID, upID, এবং bottomID

  • কারেন্টআইডি: আপনি যে মানচিত্রটিতে আছেন তার বর্তমান আইডি।
  • বামIDID: আপনি currentIDযখন বর্তমান মানচিত্রের বামে প্রস্থান করবেন তখন কী আইডি লোড করতে হবে।
  • রাইটআইডি: আপনি currentIDবর্তমান মানচিত্রের ডানদিকে প্রস্থান করার সময় কী আইডি লোড করতে হবে।
  • ডাউনআইডি: আপনি currentIDযখন বর্তমান মানচিত্রের নীচে প্রস্থান করবেন তখন কী আইডি লোড করতে হবে।
  • আপড: আপনি currentIDবর্তমান মানচিত্রের শীর্ষে বেরোনোর ​​সময় কী আইডি লোড করতে হবে।

নোট কিছু: হয় তাহলে leftID, rightID, upID, অথবা bottomID, না নির্দিষ্ট উপায়ে যে তারা একটি হয় 0। তার মানে তারা মানচিত্রের সেই দিকটি ছেড়ে যেতে পারে না। এটি নিছক একটি অদৃশ্য অবরোধ।

সুতরাং, একবার কোনও ব্যক্তি মানচিত্রের একপাশ থেকে বেরিয়ে যায়, যেখানে তারা কোথায় বেরিয়েছে তার উপর নির্ভর করে ... উদাহরণস্বরূপ যদি তারা নীচে থেকে বেরিয়ে আসে, লোড করার bottomIDসংখ্যাটি কীভাবে mapএইভাবে মানচিত্রে আঁকা হবে।

আপনাকে আরও ভাল রূপায়িত করতে সহায়তা করার জন্য এখানে একটি প্রতিনিধিত্বমূলক .GIF রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

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

সুস্পষ্ট যুক্তিটি হ'ল এটি একবারে 176 টাইল লোড করে, একটি ছোট 512x352 ক্যানভাস রিফ্রেশ করে এবং সময়ে একটি মানচিত্র পরিচালনা করে। কনটি হ'ল এমএপি আইডিগুলি, যখন অনেকগুলি মানচিত্রের সাথে লেনদেন করা হয়, তখন মাঝে মাঝে বিভ্রান্তি পেতে পারে।

আমার প্রশ্ন

  • মানচিত্র সংরক্ষণের এটি কি কার্যকর উপায় (টাইলসের ব্যবহারের ভিত্তিতে), বা মানচিত্রগুলি পরিচালনা করার জন্য আরও ভাল উপায় আছে?

আমি দৈত্যাকার মানচিত্রের লাইন ধরে ভাবছিলাম। মানচিত্রের আকার বড় এবং এটি সমস্ত এক 2D অ্যারে। ভিউপোর্টটি এখনও 512x352 পিক্সেল।

ভিজ্যুয়ালাইজ করতে সহায়তা করার জন্য এখানে আরও একটি .gif করেছি (এই প্রশ্নের জন্য):

এখানে চিত্র বর্ণনা লিখুন

আপনি আমার ইংরেজি বুঝতে না পারলে দুঃখিত। আপনার বুঝতে সমস্যা হয়েছে এমন কিছু জিজ্ঞাসা করুন। আশা করি, আমি এটি পরিষ্কার করে দিয়েছি। ধন্যবাদ।


16
গ্রাফিক্সের সাথে এই প্রশ্নটি করা প্রচেষ্টা এবং সমস্ত একটি উত্সাহের যোগ্য। :)
তাপিও

উত্তর:


5

সম্পাদনা: সবেমাত্র দেখলাম যে আমার উত্তরটি আপনার কোডের ভিত্তিতে ছিল কিন্তু আসলে আপনার প্রশ্নের উত্তর দেয় নি। আপনি সেই তথ্যটি ব্যবহার করতে পারলে আমি পুরানো উত্তরটি রেখেছি।

সম্পাদনা 2: আমি মূল কোড সহ 2 টি সমস্যা স্থির করেছি: - শেষ x এবং y এর গণনাতে +1 সংযোজনটি বন্ধনীগুলির মধ্যে ভুলক্রমে ছিল, তবে বিভাগের পরে এটি যুক্ত করা দরকার। - আমি x এবং y মানগুলি যাচাই করতে ভুলে গেছি।

আপনি কেবল স্মৃতিতে বর্তমান মানচিত্র রাখতে পারেন এবং পার্শ্ববর্তী মানচিত্রগুলি লোড করতে পারেন। 5x5 আকারের একক স্তরের 2d অ্যারে নিয়ে গঠিত এমন একটি বিশ্ব কল্পনা করুন। প্লেয়ারটি মাঠে শুরু হয় 1. স্তরের শীর্ষ এবং বাম সীমানা বিশ্বের প্রান্তে রয়েছে, তাদের বোঝা লাগবে না। সুতরাং সেই ক্ষেত্রে স্তরের 1/1 সক্রিয় রয়েছে এবং স্তর 1/2 এবং 2/1 লোড করা হয়েছে ... প্লেয়ার যদি এখন ডান দিকে চলে যায় তবে সমস্ত স্তর (আপনার সরানো এক ছাড়াও) লোড করা হয় এবং নতুন আশেপাশের স্থানগুলি হয় লোড করা হয়নি। মানে মাত্রা 2/1 এখন সক্রিয়, 1/1, 2/2 এবং 3/1 এখন লোড হয়েছে।

আমি আশা করি এটি আপনাকে কীভাবে এটি করা যেতে পারে তার একটি ধারণা দেয়। তবে এই পদ্ধতির খুব ভাল কাজ করবে না, যখন প্রতিটি স্তরের খেলার সময় সিমুলেশন করতে হয়। তবে যদি আপনি অব্যবহৃত স্তর হিম করতে পারেন তবে এটি ঠিক কাজ করবে should

পুরানো উত্তর:

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

//Mock values
//camera position x
//viewport.x = 233f;
//camera position y
//viewport.y = 100f;
//viewport.w = 640
//viewport.h = 480
//levelWidth = 10
//levelHeight = 15
//tilesize = 32;

//startX defines the starting index for the x axis.
// 7 = 233 / 32
int startX = viewport.x / tilesize;

//startY defines the starting index
// 3 = 100 / 32
int startY = viewport.y / tilesize;

//End index y
// 28 = (233 + 640) / 32 + 1
int endX = ((viewport.x + viewport.w) / tilesize) + 1;

//End index y
// 19 = (100 + 480) / 32 + 1
int endX = ((viewport.x + viewport.w) / tilesize) + 1;

//Validation
if(startX < 0) startX = 0;
if(startY < 0) startY = 0;
//endX is set to 9 here
if(endX >= levelWidth) endX = levelWidth - 1;
//endX is set to 14 here
if(endY >= levelHeight) endY = levelHeight - 1;

for(int y = startY; y < yEnd; y++)
    for(int x = startX; x < xEnd; x++)
          [...]

দ্রষ্টব্য: উপরের কোডটি পরীক্ষা করা হয়নি তবে এটি কী করা উচিত তা একটি ধারণা দেওয়া উচিত।

ভিউপোর্টের উপস্থাপনের জন্য একটি মৌলিক উদাহরণ অনুসরণ করা:

public class Viewport{
    public float x;
    public float y;
    public float w;
    public float h;
}

একটি জাভাস্ক্রিপ্ট উপস্থাপনা দেখতে হবে

<script type="text/javascript">
//Declaration
//Constructor
var Viewport = function(xVal, yVal, wVal, hVal){
    this.x = xVal;
    this.y = yVal;
    this.w = wVal;
    this.h = hVal;
}
//Prototypes
Viewport.prototype.x = null;
Viewport.prototype.y = null;
Viewport.prototype.w = null;
Viewport.prototype.h = null;
Viewport.prototype.toString = function(){
    return ["Position: (", this.x, "/" + this.y + "), Size: (", this.w, "/", this.h, ")"].join("");
}

//Usage
var viewport = new Viewport(23, 111, 640, 480);
//Alerts "Position: (23/111), Size: (640/480)
alert(viewport.toString());
</script>

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

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

এটি কীভাবে করবেন তা ব্যাখ্যা করার জন্য এখানে একটি লিঙ্ক রয়েছে: http://thiscouldbebetter.wordpress.com/2012/02/25/slicing-an-image-into-tiles-in- javascript/


কেবল স্পষ্ট করার জন্য ... ভিউপোর্ট.এক্স "531" হিসাবে পূর্বনির্ধারিত হবে এবং ভিউপোর্ট.ই "352" এবং টাইলসাইজ = "32" হবে। এবং যেমন..?
পরীক্ষা

যদি আপনি বোঝাতে চান যে ক্যামেরার অবস্থান 531 হয় তবে হ্যাঁ। আমি উপরের কোডটিতে কিছু মন্তব্য যুক্ত করেছি।
টম ভ্যান সবুজ

আমি জাভাস্ক্রিপ্ট ব্যবহার করছি ... আমি জাভা এটির সাথে সাদৃশ্যপূর্ণ।
পরীক্ষা

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

শুধু বলছি যে আপনি রেখেছেন 640, 480.. তবে এটি সঠিকভাবে কাজ করতে পারে 512, 352?
পরীক্ষা

3

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

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

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

var renderToCanvas = function (width, height, renderFunction) {
  var buffer = document.createElement('canvas');
  buffer.width = width;
  buffer.height = height;
  renderFunction(buffer.getContext('2d'));
  return buffer;
};

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

var map = renderToCanvas( map_width*32, map_height*32, renderMap );

var MapSizeX = 512;
var MapSizeY = 352;

var draw = function(canvas, mapCentreX, mapCentreY) {
  var context = canvas.getContext('2d');

  var minX = playerX - MapSizeX/2;
  var minY = playerY - MapSizeY/2;

  context.drawImage(map,minX,minY,MapSizeX,MapSizeY,0,0,MapSizeX,MapSizeY);
}

এটি চারদিকে কেন্দ্রিক মানচিত্রের একটি ছোট অংশ আঁকবে mapCentreX, mapCentreY। এটি আপনাকে পুরো মানচিত্রের চারপাশে মসৃণ স্ক্রোলিংয়ের পাশাপাশি সাব-টাইল চলন সরবরাহ করবে - আপনি প্লেয়ারের অবস্থানটি একটি টাইলের 1/32 তম হিসাবে সংরক্ষণ করতে পারেন, যাতে আপনি মানচিত্র জুড়ে মসৃণ চলাচল করতে পারেন (স্পষ্টত যদি আপনি চান স্টাইলিস্টিক পছন্দ হিসাবে টাইল-বাই-টাইল সরান, আপনি কেবল 32 এর সংখ্যা বৃদ্ধি করতে পারেন)।

আপনি যদি চান তবে আপনি নিজের মানচিত্রটি সঙ্কুচিত করতে পারেন, বা যদি আপনার পৃথিবী বিশাল হয় এবং আপনার টার্গেট সিস্টেমে মেমরির সাথে খাপ খায় না (মনে রাখবেন যে প্রতি পিক্সেল 1 বাইটের জন্যও একটি 512x352 মানচিত্র 176 কেবি) তবে পূর্বের দ্বারা এইভাবে আপনার মানচিত্রটি রেন্ডার করে আপনি বেশিরভাগ ব্রাউজারগুলিতে একটি বিশাল পারফরম্যান্স লাভ দেখতে পাবেন ।

এটি আপনাকে যা দেয় তা হ'ল একটি বড় চিত্র সম্পাদনা করার মাথা ব্যথা ছাড়াই সারা বিশ্বে টাইলগুলি পুনরায় ব্যবহার করার নমনীয়তা, তবে আপনাকে এটিকে দ্রুত এবং সহজেই চালানোর অনুমতি দেয় এবং কেবল একটি 'মানচিত্র' বিবেচনা করুন (বা যতগুলি 'মানচিত্র' আপনার পছন্দ মতো) ।


2

সমস্ত বাস্তবায়নে আমি দেখেছি টাইল মানচিত্রগুলি প্রায়শই একটি বড় চিত্র হিসাবে উত্পন্ন হয় এবং তারপরে "টুকরো টুকরো" ছোট টুকরা হয়ে যায়।

https://gamedev.stackexchange.com/a/25035/10055

এই খণ্ডগুলি সাধারণত 2 এর ক্ষমতায় থাকে তাই এগুলি মেমরির মধ্যে অনুকূলভাবে ফিট করে।


1

আইডিগুলিতে নজর রাখার একটি সহজ উপায় হ'ল তাদের সাথে আরও একটি 2 ডি অ্যারে ব্যবহার করা হবে: কেবলমাত্র "মেটা অ্যারে" তে এক্স, ওয়াই রক্ষণাবেক্ষণ করে আপনি অন্যান্য আইডি সহজেই সন্ধান করতে পারেন।

বলা হচ্ছে, এখানে গুগলের 2D টাইলড ক্যানভাস গেমিং (ভাল, আসলে এইচটিএমএল 5 মাল্টিপ্লেয়ার, তবে টাইল ইঞ্জিনটিও আচ্ছাদিত রয়েছে) তাদের সাম্প্রতিক আই / ও 2012 থেকে: http://www.youtube.com/watch?v=Prkyd5n0P7k এটি এছাড়াও সোর্স কোড উপলব্ধ।


1

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

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

এটিকে আরও দক্ষ করে তোলার জন্য আমি এখনও এটি নিয়ে কাজ করছি তবে মানচিত্রটি এতক্ষণে লোড হয়ে যায় যে এতক্ষণে এটিকে চালিয়ে নেওয়া যায়।


1
আমি কি একটি ডেমো দেখতে পাব?
পরীক্ষা

1

না , টাইল মানচিত্র সংরক্ষণের সবচেয়ে কার্যকর উপায় একটি অ্যারে

কয়েকটি কাঠামো থাকতে পারে যার জন্য একটু কম স্মৃতি দরকার তবে কেবলমাত্র ডেটা লোড এবং অ্যাক্সেসের জন্য বেশি দামের ব্যয়ে।


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

এইভাবে আপনি সংলগ্ন মানচিত্রগুলি অঙ্কন করেও সীমান্তের কম বিশ্বের একটি মায়া তৈরি করতে পারেন, সেক্ষেত্রে আপনাকে কেবল সংলগ্ন মানচিত্রই নয়, সেগুলির সংলগ্ন লোকগুলিও লোড করতে হবে।


0

আপনি কেন ভাবেন তা সম্পর্কে আমি নিশ্চিত নই: আপনি যত তাড়াতাড়ি বা পরে দেখতে পাচ্ছেন অনেকগুলি মানচিত্রে আমি অনেক আইডি নিয়ে কাজ করব। এবং এটি সম্ভবত কিছুটা বিভ্রান্তিকর এবং ব্যস্ততা পেতে পারে।

বামIDID সর্বদা কারেন্টআইডি -1 থাকবে, ডানদিকে আইডি সর্বদা কারেন্টআইডিটির +1 থাকবে।

আপআইডি সর্বদা থাকবে - (সর্বমোট মানচিত্রের প্রস্থ) বর্তমান আইডি এবং ডাউনআইডি সর্বদা বর্তমান আইডির + (মোট মানচিত্রের প্রস্থ) হবে শূন্য অর্থ ব্যতীত আপনি প্রান্তটি আঘাত করেছেন।

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

আমি একটি জাভাস্ক্রিপ্ট মানচিত্র সম্পাদক লিখেছি যা সমস্ত দিকের দিকে স্ক্রল করে, 1000 x 1000 (আমি এটি আকারের প্রস্তাব দিই না) টাইলস এবং এটি এখনও 50 x 50 মানচিত্রের মতো ভাল চলে এবং এটি প্যারালাক্স স্ক্রোলিং সহ 3 স্তর সহ রয়েছে। এটি json ফর্ম্যাটে সংরক্ষণ করে এবং পড়তে পারে। যদি আপনি বলেন যে আপনি প্রায় 2 মেগা কোনও ইমেল আপত্তি করেন না তবে আমি আপনাকে একটি অনুলিপি পাঠাব। এটি গিথুবকে বোঝানো হয়েছে তবে আমি কোনও শালীন (আইনী) টাইলসেট পাইনি, এজন্য আমি এখনও এটি স্থাপন করার জন্য বিরক্ত করিনি।

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