গেম বটগুলি কীভাবে গেমের জগত এবং অন্যান্য সত্ত্বাকে উপলব্ধি করতে পারে?


52

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

আপনি কি এটি কোনও গেমের জন্য প্রয়োগ করতে পারেন বা এটি প্রতিটি গেমের জন্য নির্দিষ্ট? দুঃখিত, যদি প্রশ্নটি পরিষ্কার না হয় ... এবং আমি কীভাবে বট তৈরি করব তা জিজ্ঞাসা করছি না, আরও কীভাবে তারা পর্দায় জিনিসগুলিকে এটি আমার কাছে আকর্ষণীয় হিসাবে আবিষ্কার করে তা কীভাবে জিজ্ঞাসা করছে!

আগাম ধন্যবাদ :)


14
বেশিরভাগ সময়, এই বটগুলি গেমের স্মৃতিতে ookুকে পড়ে এবং স্ক্রিনে কী আছে তা বোঝার চেষ্টা না করে সরাসরি গেমের উপাদানটির অবস্থানটি পড়ে।
আলেকজান্দ্রে দেশবিয়েন্স

2
Aceboy1993, আপনি কি প্রোগ্রামার? দয়া করে প্রশ্নটি সম্পাদনা করুন এবং আমাদের যেকোন উপায়ে জানান। উত্তরগুলির উপর নির্ভর করে সম্ভবত কিছুটা আলাদাভাবে করা দরকার।
Panzercrisis

3
শুধু পরিষ্কার হতে; আপনি গেমপ্লে-এর অন্তর্নির্মিত অটোমেশন সম্পর্কে কথা বলছেন, তাই না? সোনার-চাষের বট, আইম্বটস এবং এই জাতীয়? অথবা আপনি কেবল এআই প্লেয়ার বলতে চান?
আনকো

হাই, আমি প্রোগ্রামার হ্যাঁ আমি সোনার-ফার্মিং বট এবং লক্ষ্য বট সম্পর্কে কথা বলছি তবে আমি এআই খেলোয়াড়দের সম্পর্কেও আগ্রহী :)
TheRapture87

3
@ Aceboy1993 উভয়কে আচ্ছাদন করা এই প্রশ্নটিকে আরও বিস্তৃত করবে। দয়া করে এগুলি ভাগ করুন।
মাস্ত

উত্তর:


77

অনেকগুলি পয়েন্ট রয়েছে যেখানে একটি বট গেমটিতে নিজেকে ইনজেক্ট করতে পারে।

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

  • আরেকটি বিষয় হ'ল সরাসরি স্মৃতি পড়ছে [1] । আপনার কম্পিউটারে একটি প্রোগ্রাম অন্যের স্মৃতি পড়তে পারা সম্ভব। সুতরাং বিকাশকারীকে কেবল অনুসন্ধান করতে হবে যে গেমটি কী ঠিকানাতে ঠিকানাটি বট সম্পর্কিত যা তথ্য সংরক্ষণ করে। এমন সরঞ্জাম রয়েছে যা বিকাশকারীকে মেমরি চিত্র তৈরি করে এবং বিভিন্ন অনুসন্ধানের সরঞ্জাম সরবরাহ করে তারা কী চায় তা আবিষ্কার করতে সহায়তা করে। একটি পাল্টা ঠিকানা অ্যাড্রেস লেআউটটি এলোমেলোকরণ ব্যবহার করা হয়, তবে একটি স্মার্ট বট তারা এখনও স্বয়ংক্রিয়ভাবে যা সন্ধান করছে তা সন্ধান করতে সক্ষম হতে পারে।

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

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


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


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
জোশ

18

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


2
বটটি দৈত্যটি দেখতে পেয়েছে কিনা তা পরীক্ষা করার জন্য কিছু অবলম্বন পরীক্ষা করা এবং রে কাস্ট করা সহজ এবং দানবটি কী করছে তা যাচাই করতে অ্যানিমেশন স্টেট ব্যবহার করুন।
রাচেট ফ্রিক

এটি করার জন্য আপনাকে গেমটি বিপরীতে ইঞ্জিনিয়ার করতে হবে, রে কাস্টিং বাস্তবায়ন করতে হবে এবং দানবের অ্যানিমেশন অবস্থাও পড়তে হবে, যার জন্য ইনজেকশন কোড এবং .exe পরিবর্তন করতে হবে require আপনি সার্ভার থেকে প্রাপ্ত নেটওয়ার্ক প্যাকেজগুলি পড়া ( ফিলিপ প্রস্তাবিতভাবে ওয়্যারশার্ক ব্যবহার করে ) এবং তারপরে কী-বোর্ড / মাউস ক্রিয়াকলাপগুলি স্যাম্পল করার জন্য একটি এআই স্ক্রিপ্ট থাকার চেয়ে কী সহজ এটি নেটওয়ার্ক প্যাকেটের উপর ভিত্তি করে?
dimitris93

2
আমি মোডেড ক্লায়েন্ট বটের পরিবর্তে একটি "এআই প্রতিপক্ষ" বট ধরেছিলাম।
র‌্যাচেট ফ্রিক

3
@ratchetfreak ওহ এখন এটি বোধগম্য হয়। প্রশ্নের ওউ রেফারেন্সটি প্রকৃতপক্ষে বোঝায় যে "বটস" মূলত সোনার কৃষক, এআই বিরোধী নয়।
dimitris93

7

ফিলিপ ইতিমধ্যে কীভাবে সর্বাধিক বট পরিচালনা করে তার একটি দুর্দান্ত ওভারভিউ দিয়েছিল, তবে আমি কেবল কিছুটা আরও বিশদে কভার করতে চেয়েছিলাম, কারণ আমার বটগুলির সমস্ত ধরণের বা বটগুলির বিকাশ ঘটেছে বা তার জন্য আমার ব্যক্তিগত অভিজ্ঞতা রয়েছে।

রুনেসকেপে একটি বড় প্রকল্প (আরএসবট) ছিল যা রানেসকেপ ক্লায়েন্টের কাছ থেকে মেমরির বিষয়বস্তুগুলি তার স্থানীয় স্মৃতিতে অনুলিপি করবে, যেখানে এটি ক্লায়েন্টের ঝুঁকির ঝুঁকির সাথে গেমের পুরো রাজ্যটি দেখতে পারে। ডেটাটির পয়েন্টারগুলি খুঁজতে মেমোরিতে কোথায় নজর রাখতে হবে তা নির্ধারণ করতে এটি কিছুটা বিপরীত প্রকৌশল প্রয়োজন, তবে একবার তারা এটি করার পরে, তারা তথ্যের সুবিধা নেওয়ার জন্য একটি API প্রকাশ করেছিল exposed এটি কোনও জিনিসটির স্থানাঙ্কগুলি পেয়ে এবং তারপরে ক্যামেরা ট্রান্সফর্ম ম্যাট্রিক্সের সাহায্যে অন-স্ক্রীন অবস্থান অর্জনের মাধ্যমে পৃথিবীতে ঠিক কী ছিল তা জানতে পারে। হিট মুখোশগুলিও পঠনযোগ্য ছিল, সুতরাং কাঙ্ক্ষিত ফলাফল পেতে মাউসটিকে ঠিক কোন সীমার মধ্যে নিয়ে যেতে হবে তা নির্ধারণ করা তুচ্ছ ছিল।

বটটি একগুচ্ছ ডিবাগিং তথ্য সরবরাহ করে, যেমন এনোটেশনগুলি যা বিকাশকারীকে বলে দেয় কোন টাইলের স্থানাঙ্ক কোথায়, কোন আইডি রয়েছে, কোন আইডি কোনও প্রদত্ত আইটেমের অন্তর্গত, ইত্যাদি এই তথ্যগুলি তখন বট তৈরি করতে ব্যবহৃত হতে পারে। বট স্ক্রিপ্ট তৈরির আসল প্রক্রিয়াটি আসলে বেশ সহজ ছিল। কাঠামোটি অনেকগুলি ইউটিলিটি ফাংশন সরবরাহ করেছে, যেমন move_to(world_coordinates)বা mouse_move(x,y)যা কিছুটা বিশ্বাসযোগ্য উপায়ে নির্দিষ্ট ক্রিয়া সম্পাদন করবে (একটি এলোমেলো স্প্লিন বরাবর মাউসকে সরিয়ে, বারবার মিনিম্যাপ এবং স্ক্রিন উভয় দিয়ে চলবে)

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

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

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

একবার আমি বুঝতে পেরেছিলাম যে আমি আসলে আর এমএমও খেলি না এবং কেবল সেগুলি স্বয়ংক্রিয়ভাবে চালিয়েছি, আমি সিদ্ধান্ত নিয়েছি পুরোপুরি খেলা বন্ধ করব। আমি যদি আইনত নিজেকে প্রকাশ করার বিষয়ে উদ্বিগ্ন না হই তবে আমি সম্ভবত এমএমও বট বিক্রি করে হত্যা করতে পারতাম, তবে আমি সত্যিই মামলা করতে চাইনি didn't এই কারণেই আমি আজকাল সত্যিকারের প্রোগ্রামিংয়ে আমার সময় ব্যয় করি!


শেষ অনুচ্ছেদে আমিন। আমি 1 এর মাধ্যমে প্রোগ্রামিংয়ে পেয়েছি) 2 ওয়াও খেলছিলাম) বটিং ওয়া 3) বাহের জন্য আমার নিজের বট লিখতে শুরু করলাম। আমি মাত্র 2 বছরে যে প্রোগ্রামিং জ্ঞান অর্জন করেছি তা অধ্যয়নের সময় আমি যা শিখেছি তার চেয়ে বেশি মূল্যবান ছিল (ভাল, কমপক্ষে 'প্র্যাক্টিক্যাল' প্রোগ্রামিং থেকে কমপক্ষে)।
সেবাস্তিয়ান গ্রাফ

2

ফিলিপের উত্তর দুর্দান্ত, তবে মডেল / ভিউ / কন্ট্রোলার প্যাটার্ন সম্পর্কে কেবলমাত্র একটি দ্রুত নোট , বা সংক্ষেপে এমভিসি।

আপনার স্ক্রিনটি "দর্শনের" অংশ, যা "মডেল" থেকে ডেটা উপস্থাপন করে, যা যদি আপনি চান তবে গেমটির আসল অবস্থা। বটগুলি এবং আপনার চরিত্রটি সমস্ত মডেলটির মধ্যে 'বিদ্যমান' (এক অর্থে)। কল্পনা করুন আপনি যদি আপনার স্ক্রীনটি প্লাগযুক্ত করেন তবে - দৃশ্যটি চলে গেলেও গেমটি অবিরত থাকবে।

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


0

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

আপনি এই পৃষ্ঠার সংঘাত সনাক্তকরণ অংশটি দেখতে পারেন


এর জন্য আপনাকে আসল গেমটিতে কোড ইনজেক্ট করতে হবে
ডিমিট্রিস93

হ্যা অবশ্যই. এগুলি সব প্রোগ্রাম করা হলেও এটি বিনামূল্যে পাথ বা আপনার মতো অনুসরণকারী বটগুলির মতো ক্ষেত্রে ব্যবহারযোগ্য। থ্রিডি গেমসে আফিকের সবচেয়ে সাধারণ উপায় এবং কমপক্ষে মিমোর্প নয় এমন একটি অধ্যয়ন করেছে ... সম্ভবত বাহটিতে সার্ভারে সমস্ত তথ্য রয়েছে তবে এটি একটি বড় মিমোর্প হিসাবে পৃথক।
মেগাসা 3
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.