Şehirlerin haydutlar ve hırsızlar tarafından istila edildiği ıssız, savaşın yıkıldığı bir dünyada, medeniyet, daha önce yaşanmamış manzaraya dağılmış, küçük, izole edilmiş, endüstriyel kooperatifler biçiminde kendini yeniden keşfetti. Bu toplulukların varlığı, toplanmamış toprakları kümeslere satmak için değerli materyaller arayan “sıyırıcılar” olarak adlandırılan paralı işçi ekiplerine dayanıyor. Bu malzemeler daha az büyüdükçe, hurdaya çıkarmak çok daha zor ve tehlikeli bir mesleğe dönüştü. Kırılgan insan işçilerin çoğu “bot” olarak adlandırılan uzak robot standları ile değiştirildi ve tipik bir paralı askerin silahlı bir kaynakçıdan daha yetenekli bir programcı olması daha muhtemel. Hurdalıktaki insan varlığı azaldıkça paralı gruplar arasında birbirlerine saygı duyuluyor. Robotlar sadece hurda toplamak için değil aynı zamanda onu savunmak ve bazı durumlarda zorla almak için donatılıyorlar. Bot programcıları yorucu bir şekilde rakip sıyırıcıları yenmek için yeni stratejiler geliştirmeye çalışmakta, bu da giderek daha agresif botlar oluşmasına neden olmakta ve ayrıca topluluklarının duvarlarının dışına çıkan insanlar için başka bir tehlike oluşturmaktadır.
(evet, logo çok komik bir şekilde kırpılıyor)
Sıyırıcılara Hoşgeldiniz!
Bu, hurda toplama ve fabrikaların uygulanmadığı bir sıyırıcıdır. Temelde bir “onları vur”.
Botlarınızı rakip sıyırıcı grupları karşısında zafere taşıyacak bir program oluşturmakla görevli bir paralı asker programcısınız. Botlarınız, çekirdeğinde güç ve kalkan jeneratörlerinden oluşan, kavrama, kesme ve saldıran aletler ile donatılmış pek çok ek parça ile çevrili, örümcek benzeri makinelerdir. Jeneratör, kene başına 12 güç ünitesi (pu) üretebilir (bir hurdacının zaman birimi). Bu gücün bir botun üç temel ihtiyacına nasıl dağıldığını kontrol ediyorsun: Hareket, kalkanlar ve ateş gücü.
Sıyırıcı botları son derece çevik makinelerdir ve karşılaştıkları engellerin üzerinden, altından ve çevresinden kolayca geçebilirler. Dolayısıyla çarpışma, programınızın dikkate alması gereken bir şey değildir. Tam sayılarda işlem yaptığınız sürece, botunuza kullanabileceğiniz 12pu'nun tümünü veya bir kısmını veya hiçbirini tahsis etmekte özgürsünüz. 0pu bir botun hareket fonksiyonlarına atamak onu hareketsiz kılar. 2pu tahsis edilmesi, bir botun kene başına 2 mesafe birimini (du) hareket ettirmesine, 5pu 5du / tick ile sonuçlanmasına, 11pu, 11du / tick ile sonuçlanmasına neden olacaktı.
Botlarınızın kalkan jeneratörleri, vücutlarının etrafında bir deflektif enerji balonu yansıtıyor. Bir kalkan, fırlamadan önce 1 hasara kadar sapma gösterebilir, bu nedenle botu kalkan jeneratörü tekrar yerine oturtmaya yetecek güç gelene kadar açığa çıkarır. Botunuz için mevcut olan 12pu’nın tümünü, bir kısmını veya hiçbirini kalkanına ayırmakta özgürsünüz. 0pu'nun bot kalkanına tahsis edilmesi, asla kalkan oluşturmayacağı anlamına gelir. 2pu tahsis edilmesi, bir botun 12 tikten 2 veya her 6 tikten sonra yeni bir kalkan oluşturmasını sağlayacaktır. 5pu, her 12 kenenin 5'inde kalkan rejenerasyonu ile sonuçlanacaktır.
Kaynak lazerlerinde bir şarj oluşturarak, botlarınız kısa mesafelerdeki hasarlı kirişleri adil bir hassasiyetle ateşleyebilir. Kalkan üretimi gibi, botlarınızın atış hızı da, lazerlerine tahsis edilen güce bağlıdır. 0pu bir botun lazerlerine tahsis etmek asla ateş etmeyeceği anlamına gelir. 2pu tahsis etmek, bir botun her 12 tikten 2'sini atmasına vb. Neden olur. Bir botun lazeri, bir nesneyle karşılaşıncaya ya da işe yaramazlığa dağılıncaya kadar seyahat eder, bu yüzden dost ateşi konusunda dikkatli olun. Botlarınız oldukça doğru olmasına rağmen mükemmel değiller. Doğrulukta +/- 2,5 derece değişkenlik beklemelisiniz. Lazer ışını hareket ettikçe partikülleri, ışın yeterli mesafeyle etkili bir şekilde zararsız hale gelinceye kadar atmosfer tarafından kademeli olarak saptırılır. Bir lazer, nokta boşluğunda 1 hasar verir ve seyahat ettiği her bot uzunluğunda% 2,5 daha az hasar verir.
Kazıyıcı botları, temel işlevleri yerine getirecek kadar özerktir, ancak bunları bir grup olarak kullanabilmeniz için size, programcılarına güvenir. Bir programcı olarak, her bir bot için aşağıdaki komutları verebilirsiniz:
- MOVE: Bir botun hareket edeceği koordinatları belirleyin.
- HEDEF: Amaçlanan ve bir güç tahsis edildiğinde ateş etmek için bir bot tanımlayın.
- POWER: Hareket, kalkanlar ve ateş gücü arasındaki gücü yeniden dağıtın.
Teknik Oyun Detayları
Aşina olmanız gereken üç program var. Oyun Motoru ağır kaldırıcı ve oyuncu programları bağlanmak olduğunu TCP API sağlar. Oynatıcı program yazacağınız şey ve burada ikililere bazı örnekler verdim . Son olarak, Renderer , Game Engine'deki çıktısını, bir GIF savaşı üretmek üzere işler.
Oyun Motoru
Oyun motorunu buradan indirebilirsiniz . Oyun başlatıldığında, oyuncu bağlantıları için 50000 numaralı bağlantı noktasını (şu anda yapılandırılamaz) dinlemeye başlayacak. İki oyuncu bağlantısı aldığında, HAZIR mesajını oyunculara gönderir ve oyuna başlar. Oyuncu programları oyuna komutları TCP API üzerinden gönderir. Oyun bittiğinde, scrappers.json (ayrıca şu anda yapılandırılamaz) adlı bir JSON dosyası oluşturulur. Bu, işleyicinin oyunun bir GIF'sini oluşturmak için kullandığı şeydir.
TCP API
Oyuncu programları ve oyun motoru, yeni bir sonlandırılmış JSON dizgisini bir TCP bağlantısı üzerinden dördüncü ve sonrasına ileterek iletişim kurar. Gönderilebilen veya alınabilen yalnızca beş farklı JSON mesajı vardır.
Hazır mesaj
HAZIR mesajı oyundan oyuncu programlarına gönderilir ve yalnızca bir kez gönderilir. Bu mesaj, oyuncu programına, oyuncu kimliğinin (PID) ne olduğunu söyler ve oyundaki tüm botların bir listesini sunar. PID, hangi Botların düşmana karşı dost olduğunu belirlemenin tek yoludur. Aşağıdaki bot alanları hakkında daha fazla bilgi.
{
"Type":"READY", // Message type
"PID":1, // Player ID
"Bots":[ // Array of bots
{
"Type":"BOT",
"PID":1,
"BID":1,
"X":-592,
...
},
...
]
}
Bot Mesajı
YİD mesajı oyundan oyuncu programlarına gönderilir ve bir botun özellikleri değiştiğinde gönderilir. Örneğin, kalkanlar yansıtıldığında veya sağlık değiştiğinde, bir YİD mesajı gönderilir. Bot Kimliği (BID) yalnızca belirli bir oynatıcıda benzersizdir.
{
"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.
}
İletiyi Taşı
MOVE mesajı, oynatıcı programından oyuna bir komuttur (ancak bir botun komutu olarak düşünün). Basitçe taşımak istediğiniz botu ve koordinatları tanımlayın. Kendi botunuzu kontrol ettiğiniz varsayılmaktadır, dolayısıyla PID gerekli değildir.
{
"Cmd":"MOVE",
"BID":1, // Bot ID
"X":-592, // Destination X coordinate
"Y":-706, // Destination Y coordinate
}
Hedef Mesaj
HEDEF mesajı botlarınızdan birine diğer botları hedeflemesini söyler.
{
"Cmd":"TARGET",
"BID":1, // Bot ID
"TPID":0, // The PID of the bot being targeted
"TBID":0, // The BID of the bot being targeted
}
Güç mesajı
POWER mesajı botunuz için mevcut olan 12pu'yu hareket, ateş gücü ve kalkanlar arasında yeniden tahsis eder.
{
"Cmd":"POWER",
"BID":1, // Bot ID
"FPow":4, // Set fire power
"MPow":4, // Set move power
"SPow":4, // Set shield power
}
Rekabet
İşlenmemiş toprakları keşfetmek için yeterince cesursanız, paralı akranlarınıza karşı iki eleme turnuvasına girersiniz. Lütfen gönderiminiz için bir cevap oluşturun ve kodunuzu yapıştırın veya git repo, öz vb. İçin bir bağlantı verin. Herhangi bir dil kabul edilebilir, ancak dil hakkında hiçbir şey bilmediğimi ve programınızı çalıştırma talimatlarını içerdiğimi varsaymalısınız. İstediğiniz kadar gönderi oluşturun ve onlara ad verdiğinizden emin olun!
Numune oynatıcı programlar ederim onlara karşı bot test tavsiye böylece, turnuvaya dahil edilecektir. Dört benzersiz program başvurusu aldıktan sonra turnuva yaklaşık iki hafta başlayacak. İyi şanslar!
--- Winner's Bracket ---
** Contestants will be randomly seeded **
__________________
|___________
__________________| |
|___________
__________________ | |
|___________| |
__________________| |
|________________
__________________ | |
|___________ | |
__________________| | | |
|___________| |
__________________ | |
|___________| |
__________________| |
|
--- Loser's Bracket --- |___________
|
___________ |
|___________ |
___________| |___________ |
| | |
___________| | |
|___________ |
___________ | | |
|___________ | |___________|
___________| |___________| |
| |
___________| ___________|
Diğer Önemli Bilgiler
- Oyun 12 tik / saniyede oynanır, bu yüzden her 83 milisaniyeden daha fazla mesaj almayacaksınız.
- Her botun çapı 60du'dur. Kalkan fazladan yer kaplamaz. +/-% 2.5 doğrulukla, bir botu belli bir mesafeye çarpma ihtimali bu grafikte gösterilmiştir:
- Lazer hasarının mesafe üzerinden düşmesi bu grafikte gösterilir:
- Bir botun doğruluğu ve lazer çürümesi, atış başına ortalama hasarını hesaplamak için birleşir. Yani, bir botun belli bir mesafeden ateşlendiğinde neden olacağı ortalama hasar. Atış başına hasar bu grafikte gösterilir:
- Bir botun lazeri, botun merkezi ile kenarı arasında yarı yolda. Böylece botlarınızı istiflemek dost ateşi ile sonuçlanacaktır.
- Düşman botları kabaca 1440du aralıklarla ortaya çıkar.
- 120 tik (10 saniye) herhangi bir hasar vermeden geçerse oyun sona erer.
- Kazanan en fazla botu olan oyuncu, daha sonra oyun bittiğinde en sağlık olan oyuncu.
Render İmajını Anlamak
- Oyuncu 1 daireler tarafından temsil edilir ve oyuncu 2 altıgenlerle gösterilir.
- Bir botun rengi güç dağılımını temsil eder. Daha fazla kırmızı, ateş etmeye daha fazla güç tahsis edildiği anlamına gelir. Daha fazla mavi daha fazla kalkan anlamına gelir. Daha fazla yeşil, daha fazla hareket demektir.
- Bir botun gövdesindeki "delik" hasarı temsil eder. Delik ne kadar büyük olursa, o kadar fazla hasar alınmıştır.
- Bir botu çevreleyen beyaz daireler kalkandır. Bir botun dönüşün sonunda bir kalkanı varsa, gösterilir. Kalkan hasar alarak atıldıysa, gösterilmez.
- Botlar arasındaki kırmızı çizgiler, çekilen çekimleri temsil eder.
- Bir bot öldürüldüğünde, büyük bir kırmızı "patlama" gösterilir.