রেসিং গেমগুলিতে ওভারস্টিয়ারিং বিপর্যয় রোধ করুন


9

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

যা এটিকে এত বিরক্তিকর করে তোলে তা হ'ল সত্য জীবনে এটি আমার সাথে কখনই ঘটে না (godশ্বরকে ধন্যবাদ :-)), সুতরাং অভ্যন্তরীণ যানবাহন সহ 90% গেমগুলি আমার কাছে অবাস্তব বোধ করে (সম্ভবত সত্যই ভাল পদার্থবিজ্ঞানের ইঞ্জিন রয়েছে)। আমি এই সম্পর্কে বেশ কয়েকটি ব্যক্তির সাথে কথা বলেছি এবং মনে হয় আপনি রেসিং গেমগুলি 'পেয়ে' যাবেন, না আপনি পাবেন না। প্রচুর অনুশীলনের সাথে আমি খুব সাবধানে গাড়ি চালিয়ে, প্রচুর ব্রেক করে (এবং সাধারণত আমার আঙ্গুলগুলিতে ক্র্যাম্প পেয়ে) কিছু গেমগুলিতে (যেমন স্পিড সিরিজের প্রয়োজনের জন্য) থেকে সেমি-ভাল পাওয়ার ব্যবস্থা করেছিলাম।

গেম ডেভেলপার হিসাবে ওভারস্টেরিং অনুরণন বিপর্যয় রোধ করতে এবং ড্রাইভিংটিকে সঠিক বোধ করার জন্য আপনি কী করতে পারেন? (একটি নৈমিত্তিক রেসিং গেমের জন্য, এটি 100% বাস্তববাদী পদার্থবিজ্ঞানের জন্য চেষ্টা করে না)

আমি আরও আশ্চর্য হই যে সুপার মারিও কার্টের মতো গেমগুলি ঠিক কীভাবে আলাদা করে তোলে যাতে তাদের এত বেশি ওভারস্টিয়ারিং না হয়?

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


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

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

উত্তর:


7

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

এটি অবশ্যই জটিল হয়ে উঠতে পারে যখন প্লেয়ারটি সরাসরি কোনও সরল বিভাগ ঘুরিয়ে দিতে চায় বা একটি ছেদ করার ঠিক আগে লেনগুলি স্যুইচ করতে চায়।

আর একটি সমাধান হ'ল কীটি টেপ করা এবং কী ধরে রাখার মধ্যে পার্থক্য। খেলোয়াড় যতক্ষণ টার্ন কীটি ধরে রাখবে তত বেশি বাঁক কোণ angle এটি অবাস্তবও বোধ করে না, কারণ আপনার যখন স্টিয়ারিং হুইল থাকে তখন আপনার এটিকে সমস্ত দিক ঘুরিয়ে দেওয়ার জন্য সময় প্রয়োজন।

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


আপনার সংশোধন করার জন্য আপনাকে ধন্যবাদ, @ কোটেকজোট। তবে আপনি অন্য ব্যক্তির পোস্টগুলিতে সরাসরি জিজ্ঞাসা না করেই সম্পাদনার পরামর্শ দিতে পারেন।
ফিলিপ

আপনার ধারণা ভাল। ডান বোতামটি টিপানো হলে (0/1), এটি কারটি উপর নির্ভর করে এমন একটি কোণ দিয়ে গাড়িটি ঘোরান। আপনি যখন গাড়ি চালাচ্ছেন ঠিক তেমনি: আপনি বলছেন যে 'আমি বাম দিকে ঘুরলাম' (0/1) তবে বাস্তবে আপনি স্টিয়ারিং হুইলটি কম .ালের উপর নির্ভর করে ঘুরিয়ে নেবেন। এবং উল্লেখযোগ্য কিছু বিষয়: আস্তে আস্তে কোণটি ধীরে ধীরে পরিবর্তিত হয় not
গেমএলচেমিস্ট

0

গ্র্যান্ড থেফট অটো IV এবং V এর বাইরে আর কোন গেমস কার্যকর করেছে তা নিয়ে গবেষণা করার সময় আমি এই (পুরানো) প্রশ্নটি দেখতে পেয়েছি, তবে নিয়ন্ত্রণযোগ্য ওভারসেটার অর্জনের জন্য আমার কাছে উত্তর রয়েছে। গ্র্যান্ড থেফট অটো ভিতে ড্রাইভিং মডেলটি নিয়ে আমি কেবল কিছুটা বিশৃঙ্খলা পেয়েছি তবে এই তথ্যটি কিছুটা বাস্তবসম্মত ড্রাইভিং মডেলের ক্ষেত্রে প্রযোজ্য।

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

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

তবে এই পদ্ধতির একটি নেতিবাচক দিকটি হ'ল গাড়িটি খুব চটচটে এবং কিছুটা জেদ অনুভব করে যে কোনও পাওয়ারলাইড বা প্রবাহে যেতে পারে - সুতরাং এই কাউন্টারস্টিয়ার মানটি কোনও কোণে সীমাবদ্ধ হতে পারে।

এই তত্ত্বটি স্টিয়ারিং সিস্টেমটিকে পুনরায় বাস্তবায়ন করে এবং মূল আচরণের সাথে তুলনা করে যাচাই করা যেতে পারে।

  • ইনপুটটিকে সরাসরি আউটপুটের সাথে সংযুক্ত করার সময়, গতি-ভিত্তিক স্টিয়ারিং ইনপুট সীমাবদ্ধকরণ প্রয়োগ করার পরেও, গাড়িটি নিয়ন্ত্রণ করা সত্যিই অত্যন্ত কঠিন।
  • প্রাকৃতিক কাউন্টারস্টিয়ারে যুক্ত করার সময়, আচরণটি গেমগুলির বাস্তবায়নের প্রায় অনুরূপ, তবে গাড়িগুলি "খুব" স্থিতিশীল।
  • কাউন্টারস্টারে 15 ডিগ্রি সীমা যুক্ত করার সময়, আচরণটি প্রায় একই রকম।

মনে রাখার মতো একটি বিষয় হ'ল গ্র্যান্ড চুরি অটো ভি এখানে এখানে "আদর্শ" হিসাবে নেওয়া হয়েছিল - যদিও আমার এখনও অন্য কোনও খেলা খুঁজে পাওয়া যায় নি যা এই সিস্টেমটি প্রয়োগ করে।

আপনি যদি কিছু কোডের জন্য আগ্রহী হন তবে আমার বাস্তবায়নের একটি স্নিপেট এখানে here

// Returns in radians
float Racer_calculateDesiredHeading(float steeringMax, float desiredHeading,
    float reduction) {
    desiredHeading *= reduction;
    float correction = desiredHeading;

    // Get the relative velocity vector
    Vector3 speedVector = ENTITY::GET_ENTITY_SPEED_VECTOR(vehicle, true);
    if (abs(speedVector.y) > 3.0f) {
        // Simplify it to an angle
        Vector3 target = Normalize(speedVector);
        float travelDir = atan2(target.y, target.x) - static_cast<float>(M_PI) / 2.0f;
        if (travelDir > static_cast<float>(M_PI) / 2.0f) {
            travelDir -= static_cast<float>(M_PI);
        }
        if (travelDir < -static_cast<float>(M_PI) / 2.0f) {
            travelDir += static_cast<float>(M_PI);
        }
        // Correct for reverse
        travelDir *= sgn(speedVector.y);

        // Limit to some degree, R* uses 15 degrees
        travelDir = std::clamp(travelDir, deg2rad(-15.0f), deg2rad(15.0f));

        // User input deviation
        correction = travelDir + desiredHeading;
    }

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