জনশূন্য, যুদ্ধবিধ্বস্ত বিশ্বে, যেখানে শহরগুলি ঠগ এবং চোরদের দ্বারা কাটিয়ে উঠেছে, সভ্যতা পূর্ববর্তী জনশূন্য অঞ্চলে ছড়িয়ে ছিটিয়ে থাকা ক্ষুদ্র, বিচ্ছিন্ন, শিল্প সমবায় আকারে নিজেকে নতুন করে গড়ে তুলেছে। এই সম্প্রদায়ের অস্তিত্ব "স্ক্র্যাপারস" নামক ভাড়াটে কর্মীদের দলগুলির উপর নির্ভরশীল, যারা কোপগুলিতে বিক্রি করার জন্য মূল্যবান উপকরণগুলির জন্য অদম্য অঞ্চল অনুসন্ধান করে। যেহেতু এই উপকরণগুলি আরও দুর্লভ হয়ে উঠেছে, স্ক্র্যাপিং একটি আরও জটিল এবং বিপজ্জনক পেশায় পরিণত হয়েছে। নাজুক মানব কর্মীদের বেশিরভাগই দূরবর্তী রোবোটিক স্ট্যান্ড-ইনগুলির সাথে প্রতিস্থাপন করা হয়েছে, "বটস" বলা হয় এবং একটি সাধারণ ভাড়াটেয়ার সশস্ত্র ওয়েল্ডারের চেয়ে দক্ষ প্রোগ্রামার হওয়ার সম্ভাবনা বেশি থাকে। স্ক্র্যাপিংয়ে মানুষের উপস্থিতি যেমন হ্রাস পেয়েছে, তেমনি একে অপরের জন্য ভাড়াটে দলগুলির মধ্যে সম্মানও রয়েছে। বটগুলি কেবল স্ক্র্যাপ সংগ্রহ করার জন্যই নয়, এটির সুরক্ষার জন্য সজ্জিত করা হয় এবং কিছু ক্ষেত্রে এটি জোর করে নেওয়া হয়। বট প্রোগ্রামাররা চূড়ান্তভাবে প্রতিদ্বন্দ্বী স্ক্র্যাপারদের আটকানোর জন্য নতুন কৌশল অবলম্বন করে অক্লান্ত পরিশ্রম করে, যার ফলে ক্রমবর্ধমান আক্রমণাত্মক বট হয়, এবং তাদের সম্প্রদায়ের প্রাচীরের বাইরে বেরিয়ে আসা মানুষের পক্ষে আরও একটি বিপদ।
(হ্যাঁ, লোগো হাস্যকরভাবে ক্রপ হয়ে যায়)
স্ক্র্যাপারগুলিতে স্বাগতম!
এটি স্ক্র্যাপারগুলির প্রাথমিক সংস্করণ যা স্ক্র্যাপ সংগ্রহ এবং কারখানাগুলি কার্যকর করা হয়নি। এটি মূলত একটি "শ্যুট 'ইম আপ"।
আপনি প্রতিদ্বন্দ্বী স্ক্র্যাপার গ্রুপগুলির বিরুদ্ধে আপনার বটকে দূর থেকে বিজয়ী করার জন্য একটি প্রোগ্রাম তৈরি করার দায়িত্বপ্রাপ্ত একজন ভাড়াটে প্রোগ্রামার। আপনার বটগুলি মাকড়সার মতো মেশিনগুলি রয়েছে যার মূল অংশে শক্তি এবং ieldাল জেনারেটর রয়েছে, গ্রিপিং, কাটিয়া এবং আক্রমণকারী সরঞ্জামগুলিতে সজ্জিত অনেকগুলি অ্যাপেন্ডেজ দ্বারা বেষ্টিত। পাওয়ার জেনারেটর প্রতি টিকে 12 পাওয়ার ইউনিট (পু) তৈরি করতে সক্ষম (সময়ের স্ক্র্যাপারের ইউনিট)। এই শক্তি কীভাবে বটের তিনটি প্রাথমিক প্রয়োজনের মধ্যে বন্টন করা হয় তার নিয়ন্ত্রণে: আন্দোলন, ieldাল এবং অগ্নিবিদ্যুত।
স্ক্র্যাপার বটগুলি ব্যতিক্রমী চৌকস মেশিন এবং এগুলি যে কোনও প্রতিবন্ধকতার মুখোমুখি হয়ে সহজেই ওভারের নীচে এবং নীচে চলে যেতে পারে। সুতরাং, সংঘর্ষ এমন কিছু নয় যা আপনার প্রোগ্রামটিকে বিবেচনায় নেওয়া উচিত। যতক্ষণ আপনি পুরো সংখ্যায় লেনদেন করেন ততক্ষণ আপনি চলাচলের জন্য আপনার বটকে উপলভ্য 12pu এর সমস্ত, কিছু, বা কোনও কিছুই বরাদ্দ করতে মুক্ত। 0pu একটি বটের চলাফেরার কার্যগুলিতে বরাদ্দ করা এটিকে চলাচল করে। 2pu বরাদ্দ করার ফলে একটি বট প্রতি টিকের জন্য 2 দূরত্বের ইউনিট (ডু) স্থানান্তর করতে সক্ষম হয়, 5pu 5du / টিকের ফলত, 11pu 11du / টিকের ফলস্বরূপ হবে।
আপনার বটসের ঝাল জেনারেটরগুলি তাদের দেহের চারপাশে খেলোয়াড় শক্তির বুদবুদ প্রজেক্ট করে। পপিংয়ের আগে একটি ঝাল 1 টি ক্ষতি ক্ষতি করতে পারে, সুতরাং এটির শট জেনারেটরটি placeালটিকে আবার জায়গায় রাখার জন্য পর্যাপ্ত শক্তি তৈরি না করা পর্যন্ত আপনার বটটিকে উন্মুক্ত করে দেয়। আপনি আপনার বটকে ieldালটির জন্য উপলভ্য 12pu এর সমস্ত, কিছু, বা কিছু বরাদ্দ করতে মুক্ত। 0pu কে বটের শিল্ডে বরাদ্দ করার অর্থ এটি কখনই aাল তৈরি করে না। 2pu বরাদ্দ করা একটি বটকে 12 টিকের মধ্যে 2 টি বা প্রতি 6 টিকিটে একবার নতুন শাল্ড তৈরি করতে দেয়। 5 পিউ এর ফলে 12 টি টিকিটের মধ্যে 5 টিরও বেশি ঝাল geালবে।
তাদের ওয়েল্ডিং লেজারগুলিতে চার্জ তৈরি করে, আপনার বটগুলি যথাযথ নির্ভুলতার সাথে অল্প দূরত্বে ক্ষতিকারক বিমগুলিকে আগুন ধরিয়ে দিতে পারে। ঝাল উত্পাদনের মতো, আপনার বটসের আগুনের হার তাদের লেজারগুলিতে বরাদ্দকৃত শক্তির উপর নির্ভর করে। 0pu একটি বটের লেজারগুলিতে বরাদ্দ করার অর্থ এটি কখনই আগুনে কাটাবে না। 2pu বরাদ্দ করা একটি বট প্রতি 12 টিকের মধ্যে 2 টি গুলি চালানোর অনুমতি দেয় এবং আরও অনেক কিছু। একটি বটের লেজার যতক্ষণ না কোনও বস্তুর মুখোমুখি হয় বা অব্যবস্থায় ছড়িয়ে যায় ততক্ষণ ভ্রমণ করবে, তাই বন্ধুত্বপূর্ণ আগুনের প্রতি মনোযোগ রাখুন। যদিও আপনার বটগুলি বেশ নির্ভুল, সেগুলি নিখুঁত নয়। আপনার নির্ভুলতার ক্ষেত্রে বৈধতাগুলির +/- 2.5 ডিগ্রি আশা করা উচিত। লেজার রশ্মিটি ভ্রমণ করার সাথে সাথে এর কণাগুলি বায়ুমণ্ডল দ্বারা ক্রমবর্ধমানভাবে প্রতিস্থাপিত হয় যতক্ষণ না পর্যাপ্ত দূরত্বে মরীচি কার্যকরভাবে নিরীহ হয়ে যায়। একটি লেজার পয়েন্ট ফাঁকা পরিসরে 1 টি ক্ষতি করে এবং প্রতিটি বট-দৈর্ঘ্য যেখানে ভ্রমণ করে তার 2.5% কম ক্ষতি করে।
স্ক্র্যাপার বটগুলি মৌলিক ফাংশনগুলি পরিচালনা করতে যথেষ্ট স্বায়ত্তশাসিত, তবে তাদেরকে একটি গোষ্ঠী হিসাবে কার্যকর করার জন্য তাদের প্রোগ্রামার উপর নির্ভর করুন। প্রোগ্রামার হিসাবে, আপনি প্রতিটি স্বতন্ত্র বট জন্য নিম্নলিখিত কমান্ড জারি করতে পারেন:
- সরান: স্থানাঙ্ক নির্দিষ্ট করুন যেখানে বটটি সরবে।
- টার্গেট: বিদ্যুৎ বরাদ্দ যখন অনুমতি দেয় তখন লক্ষ্য এবং আগুনের জন্য একটি বট সনাক্ত করুন।
- শক্তি: চলাচল, sাল এবং ফায়ার পাওয়ারের মধ্যে শক্তি পুনরায় বিতরণ করুন।
প্রযুক্তিগত খেলা বিশদ
তিনটি প্রোগ্রাম রয়েছে যার সাথে আপনার পরিচিত হতে হবে। খেলা ইঞ্জিন ভারী চোর এবং একটি TCP API যা খেলোয়াড় প্রোগ্রাম সাথে সংযোগ প্রদান করে। প্লেয়ার প্রোগ্রামটি আপনি যা লিখবেন তা হ'ল এবং আমি এখানে বাইনারিগুলির সাথে কয়েকটি উদাহরণ সরবরাহ করেছি । অবশেষে, রেন্ডারার যুদ্ধের একটি জিআইএফ উত্পাদন করতে গেম ইঞ্জিন থেকে আউটপুট প্রক্রিয়া করে।
গেম ইঞ্জিন
আপনি এখান থেকে গেম ইঞ্জিনটি ডাউনলোড করতে পারেন । গেমটি চালু হয়ে গেলে, প্লেয়ার সংযোগের জন্য এটি 50000 পোর্টে (বর্তমানে কনফিগারযোগ্য নয়) শুনতে শুরু করবে। এটি দুটি প্লেয়ার সংযোগ গ্রহণ করার পরে এটি খেলোয়াড়দের কাছে প্রস্তুত বার্তা প্রেরণ করে এবং গেমটি শুরু করে। প্লেয়ার প্রোগ্রামগুলি টিসিপি এপিআইয়ের মাধ্যমে গেমটিতে আদেশ পাঠায়। গেমটি শেষ হয়ে গেলে, স্ক্র্যাপার্স.জেসন (এছাড়াও, বর্তমানে কনফিগারযোগ্য নয়) নামে একটি জেএসওএন ফাইল তৈরি করা হয়। গেমের জিআইএফ তৈরি করতে রেন্ডারার এটি ব্যবহার করে।
টিসিপি এপিআই
প্লেয়ার প্রোগ্রাম এবং গেম ইঞ্জিনটি নিউলাইন-টার্মিনেটেড জেএসএন স্ট্রিংগুলি পিছনে এবং একটি টিসিপি সংযোগের মাধ্যমে চতুর্থ দিকে যোগাযোগ করে যোগাযোগ করে। এখানে কেবল পাঁচটি পৃথক জেএসএন বার্তা রয়েছে যা প্রেরণ বা প্রাপ্ত হতে পারে।
প্রস্তুত বার্তা
READY বার্তাটি গেম থেকে প্লেয়ার প্রোগ্রামগুলিতে প্রেরণ করা হয় এবং কেবল একবার পাঠানো হয়। এই বার্তাটি প্লেয়ার প্রোগ্রামটিকে তার প্লেয়ার আইডি (পিআইডি) কী বলে এবং গেমের সমস্ত বটগুলির একটি তালিকা সরবরাহ করে। কোন বটস বান্ধব বনাম শত্রু তা নির্ধারণ করার একমাত্র উপায় পিআইডি। নীচে বট ক্ষেত্রগুলিতে আরও তথ্য।
{
"Type":"READY", // Message type
"PID":1, // Player ID
"Bots":[ // Array of bots
{
"Type":"BOT",
"PID":1,
"BID":1,
"X":-592,
...
},
...
]
}
বট বার্তা
বট বার্তা গেম থেকে প্লেয়ার প্রোগ্রামগুলিতে প্রেরণ করা হয় এবং যখন কোনও বটের বৈশিষ্ট্যগুলি পরিবর্তন হয় তখন তা প্রেরণ করা হয়। উদাহরণস্বরূপ, যখন ঝালগুলি প্রজেক্ট করা হয় বা স্বাস্থ্য পরিবর্তন হয়, তখন একটি বিওটি বার্তা প্রেরণ করা হয়। বট আইডি (বিআইডি) কোনও নির্দিষ্ট প্লেয়ারের মধ্যেই অনন্য।
{
"Type":"BOT", // Message type
"PID":1, // Player ID
"BID":1, // Bot ID
"X":-592, // Current X position
"Y":-706, // Current Y position
"Health":12, // Current health out of 12
"Fired":false, // If the Bot fired this tick
"HitX":0, // X position of where the shot landed
"HitY":0, // Y position of where the shot landed
"Scrap":0, // Future use. Ignore.
"Shield":false // If the Bot is currently shielded.
}
বার্তা সরান
মুভ বার্তাটি প্লেয়ার প্রোগ্রাম থেকে গেমের জন্য একটি কমান্ড (তবে এটিকে বটের কমান্ড হিসাবে মনে করুন)। আপনি যে বটটি স্থানান্তর করতে চান তা এবং স্থানাঙ্কগুলি কেবল শনাক্ত করুন। ধারণা করা হচ্ছে আপনি নিজের বটকে কমান্ড দিচ্ছেন, সুতরাং কোনও পিআইডি লাগবে না।
{
"Cmd":"MOVE",
"BID":1, // Bot ID
"X":-592, // Destination X coordinate
"Y":-706, // Destination Y coordinate
}
লক্ষ্য বার্তা
TARGET বার্তাটি আপনার বটগুলির মধ্যে একটিকে অন্য কিছু বটকে লক্ষ্য করতে বলে।
{
"Cmd":"TARGET",
"BID":1, // Bot ID
"TPID":0, // The PID of the bot being targeted
"TBID":0, // The BID of the bot being targeted
}
পাওয়ার বার্তা
শক্তি বার্তাটি আপনার বটকে চলাচল, ফায়ারপাওয়ার এবং শিল্ডগুলির মধ্যে উপলব্ধ 12pu পুনরায় স্থান দেয়।
{
"Cmd":"POWER",
"BID":1, // Bot ID
"FPow":4, // Set fire power
"MPow":4, // Set move power
"SPow":4, // Set shield power
}
প্রতিযোগিতা
আপনি যদি শত্রুহীন ভূমিগুলি অন্বেষণ করতে যথেষ্ট সাহসী হন তবে আপনাকে আপনার ভাড়াটে পিয়ারদের বিরুদ্ধে ডাবল-এলিমিনেশন টুর্নামেন্টে প্রবেশ করা হবে। দয়া করে আপনার জমা দেওয়ার জন্য একটি উত্তর তৈরি করুন এবং হয় আপনার কোডটি আটকে দিন বা গিট রেপো, গিস্ট ইত্যাদির লিঙ্ক সরবরাহ করুন কোনও ভাষা গ্রহণযোগ্য, তবে আপনার অবশ্যই ধরে নেওয়া উচিত যে আমি ভাষা সম্পর্কে কিছুই জানি না এবং আপনার প্রোগ্রামটি চালনার জন্য নির্দেশাবলী অন্তর্ভুক্ত করে। আপনার পছন্দমতো সাবমিশন তৈরি করুন এবং সেগুলির নাম অবশ্যই নিশ্চিত করুন!
নমুনা খেলোয়াড় প্রোগ্রাম , টুর্নামেন্ট অন্তর্ভুক্ত করা হবে তাই আমি অত্যন্ত তাদের বিরুদ্ধে আপনার বট পরীক্ষা সুপারিশ। আমরা চারটি অনন্য প্রোগ্রাম জমা দেওয়ার প্রায় দুই সপ্তাহ পরে টুর্নামেন্টটি শুরু হবে। শুভকামনা!
--- Winner's Bracket ---
** Contestants will be randomly seeded **
__________________
|___________
__________________| |
|___________
__________________ | |
|___________| |
__________________| |
|________________
__________________ | |
|___________ | |
__________________| | | |
|___________| |
__________________ | |
|___________| |
__________________| |
|
--- Loser's Bracket --- |___________
|
___________ |
|___________ |
___________| |___________ |
| | |
___________| | |
|___________ |
___________ | | |
|___________ | |___________|
___________| |___________| |
| |
___________| ___________|
অন্যান্য গুরুত্বপূর্ণ তথ্য
- গেমটি 12 টিক / সেকেন্ডে চলে তাই আপনি প্রতি 83 মিলিসেকেন্ড বা তার বেশি বার বার বার্তা পাবেন না।
- প্রতিটি বট 60 ব্যাস ব্যাস হয়। ঝালটি কোনও অতিরিক্ত জায়গা নেয় না। +/- 2.5% নির্ভুলতার সাথে একটি নির্দিষ্ট দূরত্বে বটকে আঘাত করার প্রতিক্রিয়াগুলি এই গ্রাফ দ্বারা প্রতিনিধিত্ব করা হয়:
- দূরত্বের বেশি লেজার ক্ষয়ের ক্ষয় এই গ্রাফ দ্বারা প্রতিনিধিত্ব করা হয়:
- একটি বটের যথার্থতা এবং লেজার ক্ষয় একত্রিত হয়ে শট প্রতি তার গড় ক্ষতি গণনা করে। এটি হ'ল কোনও বট নির্দিষ্ট দূরত্বে থেকে আগুন লাগলে তার গড় ক্ষতি হয়। শট প্রতি ক্ষতি এই গ্রাফ দ্বারা প্রতিনিধিত্ব করে:
- একটি বটের লেজার বটের কেন্দ্র এবং তার প্রান্তের মধ্যবর্তী অংশের মধ্য দিয়ে উত্পন্ন হয়। সুতরাং, আপনার বটগুলি স্ট্যাকিংয়ের ফলে বন্ধুত্বপূর্ণ আগুন লাগবে।
- শত্রু বটগুলি প্রায় 1440du আলাদা হয়ে যায়।
- গেমটি যদি শেষ হয় 120 টিক্স (10 সেকেন্ড) কোনও ক্ষয়ক্ষতি ছাড়াই পাস করে।
- বিজয়ী সর্বাধিক বটযুক্ত খেলোয়াড়, তারপরে খেলাটি শেষ হওয়ার পরে সবচেয়ে স্বাস্থ্য।
রেন্ডার করা চিত্রটি বোঝা
- প্লেয়ার 1 চেনাশোনা এবং প্লেয়ার 2 হেক্সাগন দ্বারা প্রতিনিধিত্ব করে।
- একটি বটের রঙটি তার পাওয়ার বরাদ্দকে উপস্থাপন করে। আরও লাল মানে গুলি আরও বেশি পাওয়ার বরাদ্দ করা হয়েছে। আরও নীল মানে আরও ঝাল। আরও সবুজ মানে আরও চলাচল।
- একটি বটের শরীরে "গর্ত" ক্ষতির প্রতিনিধিত্ব করে। গর্তটি যত বড় হবে, তত বেশি ক্ষতি নেওয়া হয়েছে।
- একটি বটের চারপাশে সাদা চেনাশোনাগুলি এটি ieldাল। মোড়ের শেষে যদি কোনও বটের ঝাল থাকে তবে এটি প্রদর্শিত হয়। যদি ঝালটি ক্ষতি করে পপ করা হয় তবে এটি প্রদর্শিত হয় না।
- বটগুলির মধ্যে লাল রেখাগুলি নেওয়া শটগুলি উপস্থাপন করে।
- যখন একটি বট নিহত হয়, একটি বড় লাল "বিস্ফোরণ" দেখানো হয়।