পিনবল গেমের জন্য 2 ডি সংঘর্ষ সনাক্তকরণ


9

পূর্ববর্তী গেমগুলিতে এখনও আমি বাক্সগুলির সাথে সাধারণ 2 ডি সংঘর্ষ ব্যবহার করেছি তার পরে সংঘর্ষের জন্য পিক্সেল স্তরে পরীক্ষা করে।

যদি প্রায় অনেকগুলি ফ্রেমে একটি পিনবল গেমটি তৈরি করা হয় তবে বলটি কোনও প্রাচীর বা অন্য কোনও পৃষ্ঠের সাথে যোগাযোগ করবে তাই অন্য কোনও পদ্ধতি আছে?

উত্তর:


19

দিনগুলিতে (1990) পুরানো পিনবল গেমগুলি এভাবে তৈরি করা হয়েছিল:

খেলার মাঠের জন্য কয়েকটি স্তর রয়েছে (গেমটি খেলার সময় আপনি কী দেখেন):

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

এবং সংঘর্ষের জন্য কয়েকটি স্তর:

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

বাম গ্রেস্কেল ছবিটি মূল গেমের জন্য একটি সংঘর্ষের মানচিত্র, ডান ছবিটি বিশেষ অঞ্চলের জন্য একটি সংঘর্ষের মানচিত্র: পিনবল র‌্যাম্প।

White = বলের জন্য মুক্ত অঞ্চল, রঙ সূচক 255 রয়েছে।

Gray= বলটি এই অঞ্চল থেকে "দূরে ধাক্কা" দেওয়া হবে। রঙ সূচক = বলের অবস্থানে যুক্ত করতে ভেক্টরের কোণ। হালকা ধূসর = 0 ডিগ্রি। গা dark় ধূসর = 360 ডিগ্রি।

কিছু ছদ্ম কোড:

void do_ball_physics()
{
    while(1)
    {
         byte color = read_pixel_under_ball(ballx, bally); //one pixel read
         if(color == 255) //see remark below
            break;
         float vectorx = sin(color/255.0f * 2.0f * PI);
         float vectory = cos(color/255.0f * 2.0f * PI); 
         ballx += vectorx; //push ball away from one unit
         bally += vectory; //

    }
}

কিছু বিশেষ রঙ ইনডেক্স এছাড়াও সংঘর্ষের ছাড়া অন্য কিছুর জন্য ব্যবহার করা যেতে পারে একটি কাস্টম রঙ পরিসীমা (যেমন: 240 - 255) -এর মত বিশেষ অঞ্চল শনাক্ত জন্য সংরক্ষিত করা যেতে পারে spinners, triggers, bumpers, holes, ...

আপনি দেখতে পাচ্ছেন যে এটি খুব সহজ। প্রতি ফ্রেমে কয়েকটি পিক্সেল "পঠিত" রয়েছে। এ কারণে আপনি পদার্থবিজ্ঞানের সিমুলেশনটি একটি বাস্তব উচ্চ ফ্রেমরেটে যেমন: 200 fps এ চালাতে পারেন। উচ্চ ফ্রেমরেট ব্যবহার করে সিমুলেশন মসৃণ হবে এবং "টানেলিং" হ্রাস পাবে (বলটি খুব দ্রুত চলে এলে এবং সংঘর্ষ ছাড়াই ট্রুপের উপাদানগুলি পাস করবে) happen সেই সরলতাটিই সেই দিনগুলিতে মসৃণ পিনবল গেমগুলি 386 computers(এবং এমনকি দ্রুত 286) ফিরে আসা (রঙ সাইক্লিং, ভিগা স্ক্রোলিং এবং স্প্রাইট মাস্কিংয়ের মতো আরও কিছু কৌশলগুলির মধ্যেও) সম্ভব করে তোলে ।

আজ, বেশিরভাগ পিনবল গেমগুলি আর এর মতো তৈরি হয় না। পরিবর্তে প্লেফিলিটি 2 ডি / 3 ডি দৃশ্য যা বহুভুজ বা স্প্রাইট ব্যবহার করে সংঘর্ষগুলি কিছু সরল রেখা, বেজিয়ার রেখাচিত্র বা ভিজ্যুয়াল প্লেফিল্ডের সরলিকৃত আকারের প্রতিনিধিত্বকারী গোলকের বিরুদ্ধে তৈরি করা হয়।

উদাহরণ ( ভিজ্যুয়াল পিনবল থেকে ):

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

কিছু গেম সংস্থাগুলি তাদের নিজস্ব পদার্থবিজ্ঞান ইঞ্জিন ব্যবহার করে তবে আরেকটি সহজ উপায় হ'ল ফিজিক্স ইঞ্জিনের মতো Box2Dবা ব্যবহার করা Bullet। আমি দেখেছি বেশিরভাগ আইফোন পিনবল গেমগুলি প্রাক-বিদ্যমান ফিজিক্স ইঞ্জিন + কিছু 3 ডি সম্পদ ব্যবহার করছিল।


... আমরা এখানে জাভাস্ক্রিপ্ট এবং ক্যানভাসের সাথে কথা বলছি, সুতরাং এই কাঠামোর মধ্যে সবচেয়ে ধীরতম অপারেশনটি হ ... পিক্সেল অঙ্কন এবং পড়া ... বিশেষত ধীরতম ডিভাইসে। সুতরাং এই উত্তর 4/5 কেবল ইতিহাস / অপ্রাসঙ্গিক। কিন্তু যৌক্তিকতা ছবিগুলির সাথে প্রতিযোগিতা করতে পারে না।
গেমএলচেমিস্ট

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

আধুনিক ব্রাউজারগুলিতে চিত্রগুলিতে পিক্সেল পড়া খুব দ্রুত। প্রথম কয়েকটি "ওএমজি জেএস সি এর চেয়ে দ্রুত" ডেমোগুলির মধ্যে সমস্ত চিত্র-প্রক্রিয়াকরণ কার্নেল ছিল।
শান মিডলডিচ

সংঘর্ষের মানচিত্রের টাইগার সম্পর্কে আপনি কীভাবে শিখলেন?
বেমমু

1
এই পিনবলের স্বপ্নগুলি রিমেক করার কারণে: pouet.net/prod.php?which=24499 (আমার দ্বারা নয়)। উত্সগুলিতে দেখুন, সংঘর্ষের মানচিত্রের বিষয়ে আমি কথা বলছি।
tigrou

1

পিনবলগুলিতে পদার্থবিদ্যার খুব সমৃদ্ধ সেট রয়েছে, কেবল ছিদ্র বা দেয়ালই নয়, উপাদানগুলি (পিছনে আঘাত) বা অসমান পৃষ্ঠের প্রতিক্রিয়াও রয়েছে যেখানে বলটি ধীর হয়ে যায় এবং তার গতি ফিরে আসে।

যদি আপনি একটি ভাল পিনবল তৈরি করতে চান, তবে যেতে যেতে হ'ল হয় একটি ডি ডি সংঘর্ষ সনাক্তকরণ, বা স্বচ্ছ-ভিত্তিক সিস্টেমটি প্রতিটি সংঘর্ষযোগ্য অবজেক্টের সাথে দূরত্ব এবং বেগের পরামিতিগুলির একটি পদ্ধতি রয়েছে, পরিবর্তিত গতিবেগ ফিরে আসে।


আপনি কেন 3 ডি সংঘর্ষ সনাক্তকরণের এতে 2 ডি-র বেশি কী থাকতে পারে?
জন

@ জন আমি র‌্যাম্প ইত্যাদির সাথে থ্রিডি গেম হিসাবে একটি ভাল পিনবল কল্পনা করেছি আপনি এই র‌্যাম্পগুলিকে 2 ডি তে প্রোগ্রাম করতে পারবেন এবং যখন নিজেরটি পিছনে পড়ে তখন র‌্যাম্পের ওপরে উঠে বলটিকে স্কেল করতে পারবেন, তবে এই ক্ষেত্রে এটি এখনও একটি 3D গেম, আপনি নিজের দ্বারা জেড মাত্রা যুক্ত করুন।
মার্কাস ভন ব্রডি

1

আমি কিছুক্ষণ আগে পিনবল খেলা তৈরি করেছি; এটি পিক্সেলও ভিত্তিক ছিল। আমার একটি সংঘর্ষের মানচিত্র ছিল যা সংঘর্ষের ডেটা সবেমাত্র। একটি আনুমানিক সংঘর্ষ স্বাভাবিকভাবে পাওয়া সহজ ছিল:

বলটি ওভারল্যাপিংয়ের সংঘর্ষের মানচিত্রের অঞ্চলটি ধরুন, কেন্দ্রটি সন্ধান করুন, সেই বিন্দু থেকে বল সেন্টারে ভেক্টরটি তৈরি করুন, তারপরে স্বাভাবিক করুন।

আশা করি যা আপনাকে কিছু ধারণা দেয় :)


1

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


0

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

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