বুলেট ব্যবহার করার সময় ফিজিক্স নেটওয়ার্কের সাথে সঠিকভাবে সিঙ্ক্রোনাইজ হয় না


11

আমি বুলেট ব্যবহার করে একটি ক্লায়েন্ট / সার্ভার ফিজিক্স সিস্টেমটি প্রয়োগ করার চেষ্টা করছি তবে জিনিসগুলি সিঙ্ক করতে সমস্যা হচ্ছে।

আমি একটি কাস্টম মোশন স্টেট বাস্তবায়ন করেছি যা আমার গেমের বিষয়গুলি থেকে রূপান্তরটি পড়ে এবং লেখায় এটি স্থানীয়ভাবে কাজ করে তবে আমি নেটওয়ার্কযুক্ত গেমগুলির জন্য দুটি ভিন্ন পদ্ধতির চেষ্টা করেছি:

  1. সার্ভারে থাকা ক্লায়েন্টের গতিশীল অবজেক্টগুলি (যেমন এলোমেলো ধ্বংসাবশেষ এবং অন্যান্য গুরুত্বহীন স্টাফ নয়) গতিময় তৈরি করা হয়। এটি সঠিকভাবে কাজ করে তবে অবজেক্টগুলি খুব সহজেই সরবে না
  2. উভয় ক্ষেত্রে বস্তুগুলি গতিশীল তবে সার্ভারের প্রতিটি বার্তার পরে যে অবজেক্টটি সরানো হয়েছে আমি সার্ভারের মানগুলিতে রৈখিক এবং কৌণিক বেগ সেট করেছিলাম এবং সার্ভারের রূপান্তরের সাথে বিটিআরজিডবডি :: এগ্রেটিওট্রান্সফর্মকে কল করি। আমি বিটিসিওলিওনজেক্টকেও ডেকে আছি :: অ্যাক্টিভেট (সত্য); অবজেক্টটি আপডেট করতে বাধ্য করা।

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

আমি কি সঠিক দিকে যাচ্ছি? বুলেটের মনে হয় এটির নিজের অন্তঃসারণের কোডটি অন্তর্নির্মিত রয়েছে। এটি কি আমাকে পদ্ধতিটি 1 আরও ভাল করে তুলতে সহায়তা করতে পারে? বা আমার পদ্ধতি 2 কোডটি কাজ করছে না কারণ আমি দুর্ঘটনাক্রমে স্টমপিং করছি?

সম্পাদনা: পদ্ধতি 1 এর সাথে আর একটি সমস্যা আমি কেবল লক্ষ্য করেছি যে সংঘর্ষের প্রতিক্রিয়াটি সিঙ্ক্রোনাইজ করা অবজেক্টগুলির বিরুদ্ধে সংঘর্ষের জন্য বন্ধ হয়ে যাবে। গতিময় দেহগুলি ধরণের শ্যুট স্টাফ অফ ইনফিনিটিতে কখনও কখনও যেহেতু তাদের পিছনে ছিটকে যায় না।


আপনাকে উত্তর পেতে সহায়তা করতে পারে এমন কয়েকটি জিনিস: আপনি কোন ভাষা / ইঞ্জিন ব্যবহার করছেন? এটি কি ধরণের সংযোগ? সার্ভারের পিংয়ের তুলনায় সিঙ্ক্রোনাইজেশন ঘাটতি কতটা খারাপ?
ফাইবারিকন

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

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

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

একটি আকর্ষণীয় পড়া, যা আপনার বিষয়ের সাথে আংশিকভাবে সম্পর্কিত: gamasutra.com/view/feature/3094/… । এটি আরটিএস সম্পর্কিত এবং এটি পদার্থবিজ্ঞানের বিষয়ে নয়, তবে তারা সেই বিন্দুতে পৌঁছেছে যেখানে তাদের সার্ভার এবং ক্লায়েন্টগুলিতে একটি সিমুলেশন সিঙ্ক করতে হবে। যেভাবে তারা এটা করে? তারা ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রেই স্বতন্ত্র সিমুলেশন চালায়, তবে সার্ভারটি প্যাকেজগুলি প্রেরণ করে যা নিশ্চিত করে যে ক্লায়েন্ট সিমুলেশনটি বিভক্ত হয় না এবং সংশোধন হয়, যদি তা ঘটে ...
টম ভ্যান সবুজ

উত্তর:


4

আপনার যথাযথ ক্লায়েন্ট-পক্ষের পূর্বাভাস প্রয়োজন

রয় টি। লিঙ্কটি আপনাকে তাঁর মন্তব্যে আপনাকে সরবরাহ করে বিশদে বিশদটি পড়তে হবে । এটি প্লেয়ার ইনপুট এবং চরিত্রের পদার্থবিজ্ঞানের সাথে কী করা উচিত তা বর্ণনা করে তবে নীতিটি "সার্ভার-চালিত পদার্থবিজ্ঞানের" ক্ষেত্রে একই থাকে।

এটি বাস্তবায়নের জন্য তুচ্ছ নয় তবে কয়েকটি শব্দে, গেম অবজেক্টগুলির জন্য যা সিঙ্কে থাকা দরকার:

  • সার্ভার এবং ক্লায়েন্ট উভয় পদার্থবিজ্ঞান চালান;
  • সার্ভার নিয়মিত আপডেট পাঠায়;
  • ক্লায়েন্ট অবিচ্ছিন্নভাবে এবং স্বচ্ছন্দে তার পদার্থবিজ্ঞানের জগতটিকে সার্ভারের মানগুলিতে পুনরায় সমন্বয় করে।

সুতরাং হ্যাঁ, আপনি আপনার পদ্ধতিটি দিয়ে সঠিক দিকে যাচ্ছেন Just মানগুলি ওভাররাইড করা যথেষ্ট নয় যদিও আপনি ক্লায়েন্টের উপর ঝাঁপিয়ে পড়বেন, আপনাকে যা করতে হবে তা সার্ভারের মানগুলিতে সাবলীলভাবে এবং ক্রমাগত ইন্টারপোল্ট।

আপনার আসল বাগের জন্য আমি বুলেটটির সাথে পরিচিত নই, তবে আপনি সম্ভবত কিছু মান হারিয়ে যাচ্ছেন যেমন আপনি লিনিয়ার এবং কৌণিক বেগ নির্ধারণ করেছেন, তবে আপনি কি ত্বরণ সেট করেছেন?


ধন্যবাদ! এটি আমাকে আরও ভাল অনুভব করে যে আমি সঠিক পথে আছি। আমি এখন আমার সূক্ষ্ম দাঁতের চিরুনি দিয়ে আমার কোডটি দিয়ে যাব। হয়তো কিছু বিজ্ঞপ্তি বরখাস্ত হচ্ছে না বা আপনি যেমন বলেছিলেন যে পদ্ধতি 2 (জার্কি দিয়ে) কাজ করা উচিত সেহেতু আমি একটি মান মিস করছি।
লুকাস

3

আমি ব্যক্তিগতভাবে যা করি তা হ'ল যে কেউ গেমটি হোস্ট করছে সেগুলি ফিজিক্স ওয়ার্ল্ড তৈরি করে এবং ক্লায়েন্টদের সাথে অবজেক্টগুলি সিঙ্ক করে। এমনকি যদি এটির একটি পি 2 পি নেটওয়ার্ক স্কিম আমি এখনও প্লেয়ারদের ক্লায়েন্টগুলির একটিতে ফিজিক্স ইঞ্জিনটি বেস করি base

আমি যে অন্যান্য পদার্থবিজ্ঞানগুলি ব্যবহার করি সেগুলি নিখুঁতভাবে চোখের ক্যান্ডির সাথে সিঙ্ক্রোনাইজ করার দরকার নেই।

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


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

আই ক্যান্ডিকে সিঙ্ক করার দরকার নেই, এটি প্রতি ক্লায়েন্ট গণনা করা যেতে পারে। ক্লায়েন্টের প্রতিক্রিয়াটি সার্ভারে গণনা করা হয়, ক্লায়েন্টের জন্য স্থানাঙ্কগুলি কেবল গণনা করা হয় এবং ফেরত পাঠানো হয়, আপনি ক্লায়েন্টকে কলব্যাক পাঠান না যে এটি সংঘর্ষ হয়েছে, এটি সম্ভবত ভয়ঙ্কর দেখাবে।
tsturzl

2

নেটওয়ার্ক সিঙ্ক্রোনাস ফিজিক্স ওয়ার্ল্ডগুলি বাস্তবায়ন করা অসম্ভব। পদক্ষেপ এন কোর্সে সামান্য পার্থক্য N + 1 ধাপে আরও অনেক বড় পার্থক্য আপনি এটিকে সিঙ্ক রাখতে এবং বাস্তববাদী দেখানোর জন্য বাহিনী বা আবেগ প্রয়োগ করতে পারবেন না।

সলিউশন: -

  1. আপনি চরিত্র বা রেসিং কারের মতো কেবল কয়েকটি বস্তু সিঙ্ক করার জন্য বিবেচনা করতে পারেন বিশেষত যদি তারা গতিযুক্ত। তবে বিশ্বের বেশিরভাগ অংশই বাস্তবসম্মত দেখায় বলে মনে হয় না।

  2. আপনার সার্ভারে একটি পদার্থবিদ্যার জগত থাকতে পারে এবং ক্লায়েন্টদের কাছে সম্প্রচারিত অবজেক্টের অবস্থান এবং গতিবেগ থাকতে পারে।


পৃথিবী সিঙ্ক হয় না তা দেখতে আপনি পদার্থবিদ্যার সাথে কিছু নেটওয়ার্ক গেম খেলার চেষ্টা করতে পারেন। যেমন স্পিড ওয়ার্ল্ডের জন্য নিড বিনামূল্যে এবং এতে মাল্টিপ্লেয়ার এবং বেসিক ফিজিক্স রয়েছে। (রাস্তা এবং অনিত্য বস্তুর উপর বক্স)
ম্যাক্স

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

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