Как на английском пишется танчики
существительное ↓
глагол
Мои примеры
Словосочетания
Примеры
The fuel tank’s almost empty.
Топливный бак почти пустой.
The petrol tank is leaking.
A big fish was swimming in the tank.
В аквариуме плавала большая рыбина.
They tanked the match.
Они нарочно проиграли матч.
The water tank is leaking.
Эта ёмкость для воды протекает.
The petrol tank suddenly ignited.
Топливный бак внезапно загорелся.
He tanked right over her without so much as noticing her. (A. Thirkell)
Он прошел мимо, даже не заметив ее.
Their vehicle was crushed by an army tank.
The oil leaked out of the tank.
Масло вытекло из бака.
Our team always tanks them.
Наша команда всегда их побеждает.
The tank was hit by enemy fire.
Танк был подбит огнём противника.
Some people have accused her of tanking.
Некоторые обвинили её в сливе матча.
We can stop here and tank up with best quality petrol at a good price.
Мы можем здесь остановиться и заправить автомобиль хорошим бензином за сравнительно невысокую цену.
The tank was hit by a volley of bullets.
Танк попал под шквальный огонь.
The oil tank had developed a small crack.
В масляном баке образовалась небольшая трещина.
A tank guarded the bridge from enemy attack.
От нападения врагов мост охранял танк.
The water in the tank is constantly filtered.
Вода в баке постоянно фильтруется.
Tropical fish swam slowly around in the tank.
Тропические рыбы медленно плавали по водоёму.
The new tank has yet to be tested in the field.
Новый танк ещё должен пройти испытания в полевых условиях.
The tank should hold enough to last us a few days.
Контейнер должен быть достаточно вместительным, чтобы мы могли продержаться несколько дней.
Mr. Doron is director of a public policy think tank.
Г-н Дорон является руководителем центра исследования политических проблем.
In the living room there was a tank of colorful fish.
В гостиной стоял аквариум с разноцветными рыбками.
A respected think tank led by academics from Glasgow.
Пользующийся уважением научный центр, возглавляемый учёными из Глазго.
The septic action occurs at the bottom of the septic tank.
Процессы разложения происходят на дне отстойника.
Not long after the chairman resigned, shares in the company tanked.
Вскоре после отставки председателя, акции компании рухнули.
We set off next day on a full tank.
Мы отправились на следующий день, с полным баком бензина.
We’ve had the hot-water tank lagged.
Мы сделали термоизоляцию бака горячей воды.
The fuel tank has a capacity of 40 litres.
Ёмкость топливного бака составляет сорок литров.
The mechanic found a hole in the gas tank.
Механик нашёл в бензобаке дырку.
We bled air from the tank.
Мы выпустили из баллона воздух.
Примеры, ожидающие перевода
We drained the oil tank
He funneled the gas into the tank.
The shots penetrated the tank’s armor.
600+ реально крутых ников для World of tanks. Присоединяйся и выигрывай танковые сражения!
Сложно придумать, как выбрать ник в Ворлд оф тэнкс? Ведь ник не просто заменяет человеку имя в игре, но и наделяет его определенным характером. Собранный со всего света список никнеймов на этой странице поможет вам найти самый крутой вариант!
То, какой ник выбрал себе человек, уже многое говорит о нем. Помимо этого запоминают в сети других людей тоже по псевдониму.
У нас вы найдёте самые везучие никнеймы для World of tanks! Оригинальные, мужские и женские, угарные и топовые ники! Вы точно не разочаруетесь выбрав никнейм для игры WOT в готовом списке здесь!
Самые крутые и классные (ТОП-50 лучших никнеймов)
BHyk_urpoka
NagIBATOR_v_shleme
Vertyxan
C_BepTyXu_B_oEyKJlaDKy
x_Evil_x
cTaTucT_kycToDpoT
HaGuBatoP_TanKoV
Тащю_Как_Путин
TheMonster
боевой суслик
AweFooL
KoTuK_B_KoCMoCe
Doberman
TunuHblu_TaHkucT
XxxZeRxxX
MrPrizzrak
-=MikiTankus=-
BcTPeTuMc_B_aDy
TaHkucT_B_Keke
T_E_R_M_I_N_A_T_O_R
PuuHoBaI_JIaMa
EHOT
BepTuXa_oT_DeDuJlu
XopoLLluU_MaJlbuK
НОСОК_В_ТАНКЕ
ProEloVeEk
ALEX_B_KyCTAX_HA_TAHKE
гордость деда
pak_cpedu_pAkoB
Sniper
OJleHb_Ha_paKe
Nevrox
Я нОрМаЛьНыЙ
BpeMI_TaIILuTb
JokeR
Kamikadze_bro
TaNkIsT
Xlebyshik
SkyDog
TaHK_u_BAA
Бронебой
Ha_KoJleHu_OLenu
Moryui_TaHKuCT
MUCTEP_OMU
Y_U_R_I_K
BCEM_CPATb_A_MHE_PLEBATb
RAZOR______
Mercedes-Benz
CTpeJIok_TBoeu_MeTbI
FLpSTaR
Смешные и прикольные
LaRDeN
Mazay_Ded
Xpapbiu_OJLeHb
DeLviR
I_VIP_YOU_RIP
ДaMaГeP
Каспийский
CruzTanks
KanuTaN_HeMO
P.$.I.X
ENOT_B_TANKE
KjloyH_B_KeDaX
MaJleHbKuu_MaJlbuK
vasya_tu_kYdA
Bomba_WOT
Vush
MeXBoD_PeyX
KBACkakTANK
Resursator
Lik
Pro__koTNk
WoT_TaK
UnDeRSpLasH
HeIIoqapok
ZUKTYTIN
Irvind
Motby
C_BepTyxu_TTO_rycJIe
ТАЩУ КАК МОГУ
TaHkucT_Monster
Mamin_Tankist
UVUGIZOVA
Xagok
Greka
MIsTeR_KeDbI
MicRoBooM
Kruger
_He_cTaTucT_Tbl_e
WoT_Life_good
DoBrIk
K_A_R_A_T_E_L (и цифра)
FIQ
JOVE_Aktёr_Antinyb
Ben Laden
Штирлиц в атаке
Tya_Dysh
ROBOT
POLKILO
Безбашенный
Invulnerable
LLlaKaL
JOWIGAG
Jenyk
FleSH_cs
XiLiGani(k)
Klaus
BUX
Electrik_na_stolbe
ot_Ada_do_Raya
РобинГуд
Super Tanik
HardNut
YA RONYAYU ZAPAD
aziztank
Я_ЗгРЫС_ДЕДА
damager
Nik_RU
PooPooL
B IIocTeJIi CyPerMeH
Jagdtiger
Partisan_
LubluKust
Шрам
True_Nagibator
PASUD
VoidMan
KOKOS
WOT-ROT
MINI_DRON
Jones_Killer
Ш_у_С_т_Р_ы_Й
Uhmars Spirits
Mr.Arbuz
SLiseR
ŦǿҎøßӹϒ
Demon_B_TaNke
FULL_CBEgEHUE_aaX
КОРОЛЬ ТОП!
ObiRoN
JOMI
VABUM
Peron
Imperator
NappyJuSt
Старичок
NIKI_PLAY TV
D_o_s_t_o_R_WEB_
Need_For_WOT
Romchuk
hard war
PIXIC
Westwood
VOrda
VePNieka
snaiper_voroshilovskiy
UTO
Ivan_GO_zahvatchic
Vorobei
Bce-oJleHu-Ha-CeBeP
Прогуляться
WeBsHoT
ГęHēpăJL_ŤãнĶиčŢ
FuRRRoR
quasar light
THE_SHOOTER_BEST
Нейма
Varvar
MERCV
IIyTuH
mystik
AHEJI_IIPEgOXPAHuTEJIb
Oriflame_iz_v_tanke
Zulubab
MC Powerade
Donnaya_RAK_yshka
Romellow
bARuN
BSandro
Malbert
ГрозныйТанкист
c_Beptyxu_llo_DeDy
Evil_Knigt
Makconik
Obormotez
GRAFMIFISTO
UgGrOi_CaBaoK
MoRmOk
OTUS
DEST_RO
EnrikO
KycT_Ha_K
I am Ded_na_VVar
OPIJYWAFO
SkyLiTeR
Kuepkamlem
l_HeTToeuM
грандЛоРд
PaPa_B_TapKax
I_love_Doshiquell
MiniBear
марковка
T@N∅$
IGORT
Pz.Kpfw. I
MidNIGHT
bers_build
Ork_v_tanke
M_O_D_HOPM
Panther
Tащерок_ОТ_БОжеНьки
Mixo
WOT_TALLiERKA
GameBozz
S_e_V_e_N__
TankusmPcux
UBNET
П_ё_Р_н_У_л В _т_А_н_К_е
Kasuri
VicEsHoT
PoWeRWisheR
BuiLe
HECOKPYSHIMblY_
big_tanks_klas
Танчик
Sqizman
bekas
Elite_
oJloTal_MoHeTa
biolok
GeneralWorld
GVERGEGW
ТащерюгаСбадуна
ZEDER
MuRaZoR_СпАс_ИгРу
spartakmos
Jowel
RaMaR
НАГИБнаходитсЯвТАНКЕ
POJILOY_TANKIST
Красивые и оригинальные
EGE
НОСкИ_УрОВнЯ
MeGaBoTTom
TERROR
iron warrior
Veruyuschiy_Ateist
IditeAndBegite
Da_yDeT_CBeT
Wolvirine
OveRBanG
CЬIH BETRA
Rid
KPECTOHOCELI_
HacKSuiTe
Grut_
Electrik_v_boyu
Por_Favor
РоЖдЕНныЙ_ТАщиТь
ЛИЦемЕр
EJyk_B_TankE
ILOu_INKASSATOR
Dark_Foch
LiTTLe_VicE
вальдемар
SkaTO
Ириска_Анфиска
MACTEP_JEKA
MerA_DoHaTEp_
ypa-yps
MeTkuu_CtpreLok
Floweret
OSITAVAZ
Tamilian
OREJl
PaTTe_c_MaJIuHoBKu
ТАнкПедро
WOT_PRO_GAMER_
I am Lighting
LyraMLPLion
mta
OPINER
Nezameten
sexbomba
AlьfaTraktor
Anime
Foley
WiLD_TaNkMan
Electrik_Faza
N_o_N-Kop
Тащер_ от_ бога
Fourrmi
Златанка
Нагибэ Wot
BopJlg_of_TaHkc
$ABOUT$
**__**
Wonna_Cry
ZAROWE
TATARIN
MaCtEp
Кустокрыс
SudaNeSmotri
HeyuBaute_cpay
Viot
ШУМАХЕРГОД
gen
Electrik_vs_WOT
X_Q_Z_ME
ZaSraNeC
BroDyaGa
MaMkIn_DrAnIk_WOT
BeNeFiT
Lowe
Щас по попе дам
XABAN
Van_Helsing
PyccKuu_HuK_B_TaHKaX
OcTuLuS
LOKO
Tarantyl
Cool-tankist
Парные ники
— Ђợґάҹ (Ђợґάҹҝά)
MrakSwagFox-Mralex
Mr_Tuchka Ua)—Mr_TurboMAK_YT
Kot&Whiskas
Mr_Skieliet—Mr_Skubi
Mr_KlimYT——Mr_Kro_Games
Mr_Jaba—-Mr_JamesName
yoko-&-ono
Mr_Oreo——Mr_Patsan
Жена: Ђлę¢ŧящǻя (блестящая)
— җάҏά ӿợлợ∂-
Mr_puzoMr_vadik_Mr
Viktoria-АНАНАСЬКА
ჶééчғãʍýж ჶééчғü
— β ҟʌė†ớҹҟỵ β ʌửнęęҹҟỵ
— Ђė∂ңяҝ (Ђė∂ңяҗҝά)
Cyrus-r@in
— ߨΔĶÁ ҎЮӍĶÁ
Арабские, китайские, английские, японские
الحساب الرسمي لراف باور الكويت
Troll
ﺪﻩﻤﺶﺷﻐﻠﻚ (не дело)
DragonWarrior
Lauda
ﻋﺎﺮﻓﺔ
(ترگت)(شهباز)
Law
Death gun
ﺒﻌﻴﺪﻴﻥ
ﻤﺴﺘﻌﺭﺒﺔ
ﻨﺸﺎﺮ
ﻏﻀﺒﺎﻋﻨﻰ
Ironman/или какой другой герой
Dark Warrior
Diamond_Shine
ProfessorPain
ﻴﺪﻯ
ﻋﺎﻠﻴﻦ
hacker
Terminator x
ﻮﺍﺿﺢ
Honey_Bum
ﻜﺎﺒﺭﺓ
ﻗﺪﻴﻢ
ﺼﻐﻴﺭ
ﺘﺸﻐﻴﻝ
ﺴﺎﻟﻴﻦﻋﻦ
يسكتﺼﺼﮕﭫﯤﺖﮢﮱ
ﻓﻬﻢ
Tinkerbell
JediLady
Cuddly_Puff
MrFabulous
Devil’s DoppelgangeR
$ARHANGEL$
DarkPrince
ﻤﺘﻔﺮﺟﻴﻦ
ﺷﻳﻚ
PsychoJoe
SherwoodGladiator
Jump-Shoot
Женские (для девочки и девушки)
Мужские (для мальчика и парня)
aJIenu_DyJIo_PaK_
jovka
ДОБРЫЙ_КОТ
Джипс
Sold
Chizer
Obey
CbIH_IIyTuHa
First
GrandVageron
Wargame_Fotsh
ALIMARDON
milkevey
_A_B_T_O_P_U_T_E_T_
IXAPERIT
JOV
gid_strelok
kaxelo
mandaruna
Belarusquad
DecK_OficeR
Small_Nail
AHOHuMKA
crsr
FRIZA
Madons Survivors
Kommunist
StalinVoucher
BAF
ETOHATOP
oJloToe_DePM
Lynik
miur treq yt
Edellin
yourMotherq
Doventor
SinTeMaTik
Netankist
_JIeT_A_ToJIky_HeT
bez_HuKa
KICENUJYGU
broken metal
SuPeR_MaKaKa
Rave
BomberNub
scvaersoftltd
Малыш в танке
Kirchik
kняZz
Panzerjora
Hans
alexktank
KR
$éélmårü
Dude_Shott
BT_MACTEP
BeceJloe_Moloko
Angarchanin
transtom
SloWBanG
воякер
VVar hero
Dixlofos
World Destroyer
VipBanG
_DarkWolF_
burning tank
Evil_Shooterka
moek
fagot
Nekrasov
ACTEPOu
REPIGUP
Ha Koleny Oleny
walking_vagos
oleg
Обливиос
ARS_ONE
LOBUER
CoVeRBanG
Gegcbr
Dr.IIepamanT
LightStrike
lucky strike
wervulf
a_Pycb
_ottenkov_raka
SpvceGhostace
dadman
xatiko
master_po_world
Inspektor_
JIbIe_Tanku
❄AntiNoob❄
BEtmeT_B_shleme
ACUF
KoMaHda_Alkashei
BEA
снет
PacemakerT
[MoUe]awp master
npo_PACTAMAH
maxzah
adios_babulya
AJIuaHc
NaGibaTOR_Vip
STATIST
FLeTuNNeR
xbazguk
WotKotObormot
Evilytish
Intro_Drive
ZERO play
TeMnERayPa_k
A_P_O_M_A_T
JGJ
BONES
uTeR_B_KyCTaX
Super_WoT_Rus
SquiLTioN
Icy
furyy
Dobraya_Pusy
огонь бури
Typical grandfather
Smallbear
Kell
SePaRaTyGa
SARAZ
rise of war
Если говорить о никнеймах, предназначенных исключительно для ворлд оф танк, то можно брать названия игровых объектов, моделей боевых машин и миксовать их с вашим именем или игровым прозвищем в сети.
Всё самое лучшее из сети мы собрали специально для вашего удобства. Классные никнеймы собраны в списке на этой странице для новичков ВОТ и для опытных игроков.
Вы не найдете ни одного знаменитого игрока у которого был бы глупый никнейм или набор символов. Поэтому мы советуем вам выбрать самый удачный вариант никкнейма для онлайн-игры из нашего уникального списка прямо сейчас.
Ностальгия: роемся у «Танчиков» под капотом
Многие из нас выросли на «Танчиках», «Марио» и прочих нетленных шедеврах времён рассвета игровой индустрии. Приятно порой вспомнить, как днями напролёт резались с друзьями у экранов телевизоров, меняя джойстики как перчатки. Но время не стоит на месте, и одни интересы сменяются другими. Однако, порой любовь к старым-добрым игрушкам не угасает.
Я отношу себя к людям именно таким, и мой интерес к старым играм пошёл в сторону реверс-инжиниринга, что и привело меня в IT-сферу, где я и осел с концами.
Я хочу рассказать вам о том, что же под капотом у железных монстров из знаменитой игры Battle City (в простонародье «Танчики») с не менее знаменитой приставки Nintendo Entertainment System (сокращённо NES, в России более известен её китайский клон «Dendy»). Мне в своё время эта информация показалась довольно любопытной — надеюсь, такой же она покажется и вам.
Предыстория
Несколько лет назад, изучая разнообразные графические библиотеки, я поставил перед собой цель написать точный клон «Танчиков». Так уж сложилось, что как раз в тот момент один мой знакомый занимался созданием довольно интересного ремейка путём модификации кода оригинальной игры, так что я решил проконсультироваться у него (кстати, огромное ему спасибо за консультацию и помощь в подготовке статьи). Тогда меня поразило то, какими методами реализовывался некоторый функционал. Вот и решил я, спустя годы, поделиться этими знаниями с общественностью: всё-таки это часть истории геймдева, которая может показаться интересной как ценителям классики, так и разработчикам современных игр.
Хочется сказать отдельное спасибо человеку под ником Griever за труды по декомпиляциии игры. Прежде всего благодаря полученным им исходникам стало возможно настолько подробно вникнуть в суть.
Карты уровней
Карты в Battle City состоят из тайлов — блоков размером 8×8 пикселей. Весь фон, видимый на экране, является картой — гипотетически даже со счётчиком жизней можно взаимодействовать, но по факту это, конечно же, не удастся.
Однако, в сериализованном виде уровни хранятся более компактно: для этого тайлы компонуются в блоки размером 2×2 тайла. Всего имеется 16 разновидностей блоков, которые приведены в таблице ниже. Хранится только основная часть карты (13×14 блоков), по которой и ездят танки — нет смысла сохранять статичные стены и вспомогательную информацию. Для записи одного блока используется 4 бита, таким образом, вся карта занимает 91 байт.
| Блок | Код | Блок | Код | Блок | Код | Блок | Код |
| 0 | 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | ||||
| 8 | 9 | A | B | ||||
| C | D | E | F |
В отличии от блоков, разновидностей самих тайлов гораздо больше, а именно — 256, т.е. ровно столько, сколько вмещает одна страница знакогенератора — участок видеопамяти, где каждому тайлу соответствует индекс от 0 до 255. Тайлы используются как для создания окружения уровня, так и для отображения информации о количестве вражеских танков, жизней и т.п. Но непосредственно в элементах уровня их используется всего 22 — из них 6 для формирования перечисленных блоков, остальные 15 — дополнительные тайлы кирпичных блоков, о них стоит рассказать подробнее.
Поэтому, кстати, при уничтожении части кирпичного блока, танк не может въехать на освободившееся пространство — ведь сам тайл не был уничтожен.
Расположение точек респауна и орла на карте фиксированы, объекты будут появляться на своих местах независимо от того, что находится в месте их появления. Это и происходит, если во встроенном редакторе уровней «замуровать» эти участки.
Если кому-то интересно позаниматься картостроительством, то для этих целей существует хороший редактор Quarrel, который работает прямиком с образом игры.
Генерация случайных чисел
Задача генерации случайных значений с давних пор не давала покоя человечеству. Программным путём получить истинно случайное значение невозможно, поэтому зачастую задача сводилась к генерации псевдослучайных значений с распределением, близким к тому, что свойственно случайным.
Для компьютера с полностью детерминированным поведением генерация псевдослучайных чисел является ещё более сложной задачей. Например, при каждом запуске, оказывая одинаковое воздействие (нажимая одни и те же кнопки в одно и то же время), мы будем получать одинаковый ход игры — на этом принципе даже основаны записи игрового процесса, где для каждого кадра хранятся нажатые в тот момент кнопки. Но для нас это не столь критично: важно получать как можно более «случайные» значения в рамках одного сеанса.
Рассмотрим, как обстоят дела с Battle City. Здесь для генерации псевдослучайного значения используется несколько «случайных» сущностей — это предыдущее случайное значение, счётчик секунд и поочерёдно байты т.н. нулевой страницы — первых 256-ти байт оперативной памяти, которые процессор NES может адресовать быстрее и проще, чем остальные. Именно поэтому нулевая страница содержит наиболее часто используемые, и, как следствие, наиболее часто изменяемые переменные, что обеспечивает более равномерное распределение.
В итоге на конечное значение числа влияет множество факторов: нажатые игроком кнопки, координаты всех танков и пуль на экране, количество очков обоих игроков, состояние множества таймеров (таких как бонусные) и даже состояние звуковых каналов! Конечно, это далеко не полный список.
Само выражение, по которому высчитывается очередное случайное число, довольно простое. Не буду вдаваться в подробности, просто покажу, как это выглядело бы на языке C:
Как видно из кода, мы можем в любой момент получить псевдослучайное значение в диапазоне от 0 до 255. При том его распределение достаточно адекватно, в чём можно убедиться по нетленному геймплею.
Бонусы
Кстати, в пиратских версиях с пистолетом присутствует ещё один бонус — корабль, который позволяет передвигаться по воде. Также в некоторых модификациях бонусы могут брать и противники, что в корне меняет баланс игры. Существовали даже целые сборники подобного рода модификаций, где версии различались разными подобными мелочами.
Судя по всему, изначально планировалось включить в игру восемь бонусов, но в итоге их осталось шесть. Однако, при появлении бонуса берётся случайное значение по модулю 8 (от 0 до 7), которое является индексом в таблице бонусов, где место не включенных в игру бонусов повторно заняли звезда и граната. В итоге вероятность их выпадения равна 1/4, в то время как вероятность выпадения остальных бонусов равна 1/8.
Бонусы часы и каска действуют 10 секунд (при респауне игрока каска действует 3 секунды, включая время на респаун), бонус лопата — 20 секунд.
Сами носители бонусов — мигающие танки — появляются, если у врага в ангарах остаётся 17, 10 или 3 танка. Т.е. танки под номерами 4, 11 и 18 — бонусные.
Стоит упомянуть, что секунда по меркам игры длится немного дольше обычной: у NTSC-версии консоли частота обновления экрана составляет 60 кадров в секунду, и самым простым способом вести счёт секунд является в каждом кадре увеличивать номер секунды, если счётчик кадров по модулю 60 равен нулю. Но для упрощения вычислений, а также, чтобы обнуление счётчика кадров в результате переполнения не влияло на подсчёт таким способом, это число округлили до 64 (0x40) — для взятия числа по этому модулю достаточно произвести логическое умножение на 0x3F. Получается, что игровая секунда составляет 1.06 реальной секунды, но это не касается временных отрезков, которые измеряются количеством кадров.
Занимательный факт, известный каждому знакомому с игрой: перед тем, как перестать действовать, защита вокруг штаба начинает «мигать», превращаясь то в кирпичное, то в бронированное ограждение (происходит это в последние 4 секунды действия бонуса). При этом, даже если защита вокруг штаба была частично или полностью уничтожена, каждый раз при мигании она восстанавливается, пока полностью не превратится обратно в целую кирпичную стену.
Интеллект противников
Конечно, AI в танчиках не представляет собой тактический анализатор, но кое-какая логика всё же высчитывается.
Существует три периода поведения танков: сначала они движутся хаотично, затем они преследуют игроков, и, в конце концов, начинают атаковать штаб. Длительность первых двух периодов одинакова и равна восьми периодам респауна. Т.е., поделив время респауна на 8, мы получим длительность в секундах (или, умножив на 8, получим то же самое время в кадрах) — например, для первого уровня и одного игрока это будет 23 секунды. Третий же период будет длиться до тех пор, пока счётчик секунд не обнулится (достигнув 256), и цикл периодов не начнётся заново.
Вся эта вражеская тактика основана на системе команд, для чего выделено 8 байтов: два под танки игроков и шесть под вражеские танки. Четыре старших бита такого байта используются под команду, оставшиеся четыре младших — под её аргументы (как правило это направление движения). В итоге получается 16 команд, под каждую из которых существует обработчик. Обработчики вызываются раз в кадр для каждого танка после обработки движения.
Существует функция смены направления, которая при вызове в первом периоде поведения меняет направление танка случайным образом, во втором периоде даёт танкам с чётными номерами команду двигаться к первому игроку, с нечётными — ко второму, а в третьем даёт команду двигаться в сторону штаба.
При пересечении вражеским танком границы тайла (когда обе коодринаты становятся кратны восьми), существует вероятность 1/16, что для танка будет вызвана эта функция. Если же координаты танка не были кратны восьми, либо же не была вызвана функция смены направления, и при всём этом танк упирается в препятствие, то с вероятностью 1/4 произойдёт следующее: танк сменит направление на противоположное, если хотя бы одна из координат не кратна восьми, в ином случае танку будет дана команда смены направления.
При выполнении команды смены направления происходит несколько другое: с вероятностью 1/2 вызывается описанная выше функция, иначе с равными вероятностями циклически берётся либо предыдущее, либо следующее направление из списка: вверх, влево, вниз, вправо (т.е. танк поворачивается либо по часовой, либо против часовой стрелки).
Можно представить всю эту логику в виде такого псевдокода:
Интересная ситуация получается, когда танк упирается в препятствие или стену — поскольку в таком случае, даже если танк не повернул, одна из координат постоянно кратна восьми и перед ним существует тайл-препятствие, то вероятность поворота возрастает в разы. Поэтому танки практически не застревают на месте: даже попадая в угол или нишу, они довольно быстро оттуда выезжают.
Не менее интересно обстоят дела с вражескими выстрелами. Сами по себе они происходят абсолютно обособленно от танков — у каждого врага есть одна пуля, а выстрел в каждом кадре сам решает, запустить эту пулю или нет. Если пуля уже в полёте, то выстрела не происходит, иначе существует вероятность 1/32, что танк выстрелит. В таком случае, пуля оказывается на передней границе танка по её центру и наследует направление своего танка.
Стоит сказать пару слов и о поведении танков игроков в режиме демонстрации. Тут всё просто: если на экране есть бонусы, танки стремятся к ним (при этом могут застрять по пути, если пуля пролетает мимо препятствия, в которое они упираются). Иначе они просто преследуют первый доступный танк, а если таковых не осталось — стоят на месте. Снаряды выпускаются по тем же правилам, что и у вражеских танков. Огонь по своим в демо-режиме не даёт эффекта.
Обработка коллизий
Расчёт коллизий всегда был довольно ресурсоёмкой задачей, что может быть критично для такого процессора, как у NES. Просчёт взаимодействия между танками с реализацией «в лоб» требовал бы сравнить каждую пару танков, что, несмотря на их небольшое количество, всё же довольно дорогостоящая процедура для процессора с тактовой частотой 1.76 МГц. Но не стоит забывать, что кроме танков по карте передвигаются и выпущенные снаряды. Поэтому разработчики пошли на довольно интересную хитрость.
Дело в том, что каждый танк… «рисует» под собой невидимую стену. Таким образом, обнаружение коллизии между танками происходит на этапе обнаружения коллизий между танками и элементами уровня, для чего достаточно лишь определить, имеется ли по определённой координате препятствие. Имеет это и побочные эффекты: наверняка многие замечали, что если пытаться «въехать» сзади в движущийся вперёд танк, движение игрока блокируется, пока танк не отъедет на некоторое расстояние — как раз в этот момент он переезжает на следующий тайл, «рисуя» там новую стенку и «стирая» старую.
При попадании снаряда одного игрока по другому, второй теряет управление движением на 192 кадра, т.е. на три игровых секунды. Но в режиме демонстрации этого не происходит.
Ещё одна интересная вещь: медленные пули (подробнее о скорости чуть ниже) обрабатываются не каждый кадр, а через кадр. Теоретически может возникнуть ситуация, когда игра будет тормозить в каждом нечётном кадре, и процессор не будет успевать дойти до обработки коллизий такой пули, откладывая её. А ведь в следующем кадре он и вовсе не должен будет её обрабатывать! Из-за подобного стечения обстоятельств медленные пули в некоторых чрезвычайных случаях могут пролетать стенки насквозь, когда игра сильно притормаживает.
Движение
Скорость в игре обуславливается количеством пропускаемых кадров при изменении координат. Так, например, у игрока координата меняется каждые три кадра из четырёх, у самого быстрого врага в игре — каждый кадр.
То же самое касается и снарядов — их существует два типа: быстрые, летящие со скоростью 4 пикселя в кадр, и медленные, имеющие скорость 2 пикселя в кадр.
| Танк | Скорость, px/frame | Тип снаряда | Танк | Скорость, px/frame | Тип снаряда |
| 3/4 | Медленный | 2/4 | Медленный | ||
| 3/4 | Быстрый | 4/4 | Медленный | ||
| 3/4 | Быстрый | 2/4 | Быстрый | ||
| 3/4 | Быстрый | 2/4 | Медленный |
Поскольку при движении необходимо обрабатывать и коллизии, то уместно было бы оптимизировать рассчёты, как можно более равномерно распределив их по кадрам. При самом простом подходе достаточно было бы в чётных кадрах обрабатывать перемещение всех врагов, а в нечётных только передвижение шустрого БТР. Но тогда нечётные кадры могли бы быть перегружены, и игра бы просто лагала.
На самом деле нагрузка распределена довольно хитро. Производится «XOR» между номером кадра и номером танка, и только потом проверяется чётность/нечётность результата. В итоге получается, что в чётных кадрах обрабатывается одна половина медленных танков, а в нечётных — другая.
И немного информации о скольжении на льду. Тут всё просто: после того, как игрок отпустит кнопку направления на льду, танк будет ехать сам ещё 28 кадров (т.е. проедет 21 пиксель) или пока не выедет со льда. В этот период состояние его гусениченого трака не меняется и звук езды не проигрывается, а если нажать кнопку направления уже на льду — будет проигран характерный звук, если таймер скольжения в этот момент равен нулю.
Пасхальные яйца
Пасхальные яйца встречаются во многих играх того времени, не обошли стороной они и Battle City.
Если на титульном экране выбрать режим CONSTRUCTION, войти и выйти из него 7 раз (нажимая START, START), затем зажать на первом джойстике кнопку «вниз», нажав на втором кнопку A 8 раз, потом зажать на первом джойстике «вправо», нажав на втором кнопку B 12 раз, и, наконец, нажать на первом джойстике кнопку START, то мы увидим трагическую историю любви.
Кроме того, в игре можно встретить неиспользуемые данные — имена разработчиков (RYOUITI OOKUBO, TAKEFUMI HYOUDOU, JUNKO OZAWA) и иероглифы, означающие имя главного героя лавстори и название улицы (возможно, на которой жил он сам или его возлюбленная).
Пожалуй, здесь я не буду вдаваться в подробности, ибо это подробно изложено по ссылке чуть выше.
Эпилог
В заключение хочу сказать, что раньше создание игр было в некотором смысле всё же большим искусством, чем сейчас. Это же колоссальное мастерство — уложиться в ограничения аппаратной части, и в то же время создать хорошую игру. Это сродни демосцене, которая, по сути, преследует те же самые цели — создавать шедевры там, где это сложно вообразить.
В наши дни всё это уходит в прошлое, позволяя не особо задумываться о способах реализации. На мой взгляд, это сильно понижает порог вхождения в процесс разработки игр, что постепенно, но верно превращает его скорей в обыкновенный бизнес, чем в искусство. Хотя, возможно, я просто слишком эстетичен в этом отношении.
