নেটওয়ার্কিং ইন্টিগ্রেশনের কারণে আমার নিজের ফিজিক্স ইঞ্জিনটি লেখা উচিত?


11

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

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

আমার সমস্যাটি হ'ল, আমার বর্তমান পদার্থবিজ্ঞান ইঞ্জিন, জবক্স 2 ডি (মূলত বক্স 2 ডি একটি বন্দর), বিশ্বকে ফিরিয়ে আনার পক্ষে সমর্থন করে না এবং দৃশ্যত বিশ্বের ডেটা সিরিয়াল করা এত সহজ নয়। আমার 2 টি সমাধান রয়েছে, আমি আমার বর্তমান পদার্থবিজ্ঞানের ইঞ্জিনটি সংশোধন / প্রসারিত করতে বা নিজের লেখা লিখতে পারি।

আমার নিজের পদার্থবিজ্ঞানের ইঞ্জিন লেখার কারণগুলি -

  • আমি অপ্রয়োজনীয় বৈশিষ্ট্যগুলি মুছে ফেলতে পারি। টপ ডাউন গেমটিতে আমার কেবল সংঘর্ষ যান্ত্রিকতা এবং পরিচালনা বাহিনী দরকার। কোনও মাধ্যাকর্ষণ জড়িত নয়।
  • আমি কোডটি আরও ভালভাবে বুঝতে পারি এবং এটি রোল ব্যাক ফাংশনগুলি বাস্তবায়িত করা আরও সহজ likely

JBox2D প্রসারিত / সংশোধন করার কারণগুলি

  • আমার নিজের পদার্থবিজ্ঞানের ইঞ্জিন লেখা, একটি উল্লেখযোগ্য পরিমাণে কাজ হবে যা জটিল হতে পারে
  • জেবক্স 2 ডি এর একটি বিস্তৃত সমর্থনকারী সম্প্রদায় রয়েছে যা আমাকে আমার দেবের সাহায্য করতে পারে
  • সংঘর্ষ সনাক্তকরণের মতো জিনিসগুলির জন্য জেবক্স 2 ডি-তে নির্দিষ্ট অনুকূলকরণ রয়েছে, যা এটি দরকারী করে
  • ইতিমধ্যে কিছু কাজ ইতিমধ্যে এটি করা হয়েছে, তবে সামান্য কোড ভাগ করা হয়েছে

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


এছাড়াও মনে রাখবেন যে আপনি যদি JBox2D ব্যবহার করেন তবে আপনাকে strictfpসর্বত্র ব্যবহার করতে হবে যা কার্যকরভাবে প্রভাবিত করবে। অন্যথায় সার্ভার এবং ক্লায়েন্ট ঠিক একই ফলাফল না পেতে পারে। পরিবর্তে স্থির পয়েন্ট ব্যবহার করার পরামর্শ দেব would
সাম হোচেভার

উত্তর:


7

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

2 টি আয়তক্ষেত্রগুলিতে ঘটতে পারে এমন 3 টি সংঘর্ষের জন্য অ্যাকাউন্ট:

  1. প্রান্তে প্রান্ত: খুব সহজ, আপনি একটি একক প্রান্তের অক্ষটি পেয়ে গেছেন এবং অন্যটি এবং আপনি সিদ্ধান্ত নিয়েছেন যে তারা উভয়ই একই স্থানটি দখল করে আছে বা এটির কাছে পর্যাপ্ত পরিমাণ রয়েছে whether
  2. কোণে কোণ: আপনার ঘোরানো আকার থাকলে এটি সহজেই সবচেয়ে সাধারণ হবে। ভাগ্যক্রমে, এটি প্রয়োগ করাও বেশ সহজ।
  3. কর্নার টু কর্নার: এটি এত কমই ঘটবে যে এটি কার্যকর করার মতোও নয়। এর কারণটি হ'ল, 2 টি জিনিস ঠিক একই অক্ষের ঠিক বিপরীত দিকে আপনার ইঞ্জিনগুলিতে সর্বশেষ গণনা করা দশমিকের নীচে চলে যেতে হবে। এখন, যদি সবকিছু 45 বা 90 ডিগ্রি দ্বারা ঘোরানো হয় তবে এই MAY (এমনকি এখনও সম্ভবত না) অন্তর্ভুক্ত মূল্যবান

সম্পাদনা: মন্তব্য হিসাবে, আমি এই বিষয়ে খুব কম পরিচিত, এবং বুলেট / অনুমান সংঘর্ষ সম্পর্কে পরামর্শ নেওয়া উচিত নয়।

আমি যখন 2 ডি স্পেসে বুলেট নিয়ে কাজ করেছি, তখন আমি এমন এক ধরণের পথ ব্যবহার করেছি যা সরলরেখা এবং বাঁকা উভয় ক্ষেত্রেই কাজ করে যেখানে আমি পদার্থবিজ্ঞানের ইঞ্জিন (যা আমি স্ক্র্যাচ থেকে তৈরি করি না) ব্যবহার করে প্রজেক্টটি নিক্ষেপ করব এবং মানক সংঘর্ষ ব্যবহার করব।

মন্তব্যগুলিতে স্ক্র্যাচ থেকে এটি তৈরি সম্পর্কে পড়ুন।


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

  • একটি প্রক্ষিপ্ত নিক্ষেপ করা হচ্ছে
  • যে দিকে এটি নিক্ষেপ করা হচ্ছে
  • এটি বাঁকা বা না
    • এবং যদি তা হয় তবে বক্রের কাজ কী the
  • এটি অনুমানযোগ্য কী (এটি গ্রাফিক, প্রভাব, ক্ষতি, সমস্ত কিছুর জন্য অ্যাকাউন্ট)

এখন প্রতিটি অভিজাত প্রজেটের সার্ভারের চেয়ে ইঞ্জিনের ডেটা আপডেট করুন এবং প্রতিটি বুলেটের জন্য প্যাকেট ডেটা প্রেরণ করুন। (কল্পনা করুন যে স্ক্রিনে এমনকি 2 টি মেশিনগানও রয়েছে! যিশু!)


অবশ্যই এটি প্রয়োগ করা তুলনামূলকভাবে সহজ, তবে আমি সংঘর্ষ সনাক্তকরণের অপ্টিমাইজেশনেও আগ্রহী, যা কীভাবে বাস্তবায়ন করতে হয় সে সম্পর্কে আমার কোনও ধারণা নেই।
লিয়ামজেবদী

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

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

আমি যখন সংঘর্ষের সার্ভারের
পাশটি

4
@ ম্যাডপাম্পকিন: আপনার অতিরিক্ত আত্মবিশ্বাস আপনার উত্তরটির উপর খারাপ প্রভাব ফেলে; আপনি সংঘর্ষ শনাক্ত করার বিষয়ে কথা বলছেন, তবুও আপনি সুইপ সংঘর্ষ সনাক্তকরণের কথা উল্লেখ করেন নি যা 2D শ্যুটারে যথাযথ বুলেট পরিচালনার পরম মূলতে রয়েছে। এছাড়াও, ঝাড়ফুঁক করার পরেও রেজোলিউশন সনাক্তকরণের মতোই গুরুত্বপূর্ণ, যেহেতু আপনাকে প্রথমে কোন সংঘর্ষের ঘটনা ঘটেছে, সম্ভাব্য দ্বন্দ্বগুলি সমাধান করতে হবে এবং মুছে ফেলা সত্তাগুলির ক্ষেত্রে আবার পুরো রেজোলিউশনটি শুরু করতে হবে। অবশ্যই আপনি মনে করছেন না এমন তুচ্ছ বিষয় নয়।
sam hocevar
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.