суббота, 9 апреля 2022 г.

Ассемблерная заметка №2

Об инструкции CMP


Furthermore, with the CMP instruction, the destination operand doesn't change. Just the flags.

Let me illustrate. Let's say EAX = 00000005 and EBX = 00000005. If we do this arithmetic operation:

CMP EAX, EBX

What's happening, is in effect this:

EAX - EBX ----> 00000005 - 00000005

Since the result would be 0, but we don't change the destination operand in a CMP instruction, the zero flag is set to 1 (since it's true).

So, as we saw, depending on the result of the previous arithmetic operation, flags can be set accordingly:


enter image description here

пятница, 8 апреля 2022 г.

Ассемблерная заметка №1

Об инструкции TEST


Some x86 instructions are designed to leave the content of the operands (registers) as they are and just set/unset specific internal CPU flags like the zero-flag (ZF). You can think at the ZF as a true/false boolean flag that resides inside the CPU.

in this particular case, TEST instruction performs a bitwise logical AND, discards the actual result and sets/unsets the ZF according to the result of the logical and: if the result is zero it sets ZF = 1, otherwise it sets ZF = 0.

Conditional jump instructions like JE are designed to look at the ZF for jumping/notjumping so using TEST and JE together is equivalent to perform a conditional jump based on the value of a specific register:

example:


TEST EAX,EAX
JE some_address


the CPU will jump to "some_address" if and only if ZF = 1, in other words if and only if AND(EAX,EAX) = 0 which in turn it can occur if and only if EAX == 0

the equivalent C code is:


if(eax == 0)
{
    goto some_address
}

понедельник, 17 января 2022 г.

Убийца Eve Online

История о том, чем я занимался на протяжении прошлого года

Юрий «yurembo» Язев

     

В конце 2020-го мне позвонил незнакомый челик, предложил присоединиться к его команде в качестве лида, дабы разрабатывать космическую MMORPG на движке UE4. Я тут же словил фэйс палм, припомнив события 12 лет давности, положившие начало Геному. Узнав, что в команде 5 разработчиков, я снова словил фэйс палм. Разработка к тому времени длилась уже полгода.

На тот момент в команде были: 1 клиентский программист, 2 веб разработчика, 1 моделлер, плюс руководитель в качестве гейм дизайнера. Позднее к команде присоединился художник. 

Свою мотивацию к созданию игры шеф объяснил так: «Всю жизнь играю в компьютерные игры, последние годы в Eve Online, Star Conflict, решил собрать команду, сделать свою игру». Деньги на разработку, по его словам, у него водились, благодаря своему бизнесу. Для меня это в первую очередь значило, что мы будем свободны от наездов различных инвесторов, которые хотят, чтобы игра «была готова завтра». Посему стало весьма интересно. 

Контора расположилась в Перми. Крайне мерзкий город. Замечу, мой родной город нисколько не лучше, но он родной. Поэтому я заключил: «В Пермь я переезжать не буду, только удаленно». ОК. Обсудили некоторые детали, на том и порешили.

Начали работать, я всю жизнь сотрудничаю удаленно, поэтому мне не привыкать к такому формату. Не люблю офисы и большую часть людей, их наполняющих, и создающие разные отвлекающие моменты.  

В общем, я занялся серверной частью, плюс дополнительным программированием – разработкой дополнительных штук. Для эффективной работы организовал систему контроля версиями, систему управления проектами и другие важные вещи (пользоваться которыми всех членов команды мне приучить-таки не удалось), необходимые для командной работы. Как оказалось, в офисе, находившемся на предприятии шефа, сидел только клиентский программист, все остальные работали удаленно. 

К моему приходу сцена космоса уже имелась, космические кораблики летали. Первые месяцы сетевую игру тестировали на моем компе. Потом, для проведения тестов с игроками, мы арендовали сервер у хостера. Я сбилдил игровой сервер под Linux, поскольку аренда виртуального Linux-сервера выходит дешевле, чем Windows-сервера. Но суть не в этом.

Если программная часть по игре постепенно развивалась, то арт часть остановилась. Над ней, как я говорил выше, работали 1 художник, 1 моделлер и это для MMORPG! Из чего строить сотни часов геймплея?! Думая над этим в течение года, я плакал. О расширении команды в сторону арт творцов шеф не хотел слушать. Он планировал и до сих пор планирует выпустить игру осенью 2022 года. 5 разработчиков, MMORPG – сотни часов геймплея. По его словам: «В космосе ведь ничего нет, несколько звездолетов будет достаточно, остальное – потом добавим».

Веб-программисты без конца переделывали сайт. Не зная мат. часть игр и MMORPG во время созвонов постоянно лезли не в свое дело, приходилось постоянно спорить, остальные, так же, не зная мат. часть, вставали на их сторону, приходилось спорить еще активнее и дольше. Раздражало. При этом, послушать мои советы коллегам было некогда. Так получилось, что среди этой шайки-лейки только я имел опыт разработки MMORPG и игр, в общем.

Я понял, нас 7 человек, но у нас нет никакой дисциплины. Как быть с командой в 50, 100, 200 человек? Я в январе завел доску для отметки выполненных и планируемых заданий, за 10 месяцев мне удалось приучить к ней только Макса (клиентского программиста). Каждую неделю, на каждом созвоне я повторял, что мне важно видеть, кто, чем занимается, у кого, какие планы, чтобы, например, даже планировать свои задачи в соответствии с тем, что разрабатывают веб-программисты, но нет. Просил шефа вмешаться в ситуацию, он сказал: "Будет сделано", но ничего сделано не было. Моделлер Паша вообще на созвон не выходил. Какие космолеты были готовы, те и то без конца переделывались. 

Наконец, разработка игры подошла к тому моменту, когда можно добавлять БД. У меня довольно обширный опыт работы с реляционными СУБД не только в игровой индустрии. Сколько со мной спорили вебщики, все равно сделали по-своему. 

А, самое интересное, в октябре у шефа кончились деньги. Он сказал: «Потерпите пару месяцев, потом все будет. Можете пока проектом не заниматься, а где-то пофрилансить, но команду я терять не хочу». На самом деле это означало: «Работайте в 2 раза усерднее сейчас без зарплаты, а потом когда-нибудь пренепременно за хорошие бонусы».

Другой показательный пример. Уже на излете времени собрались делать лаунчер. Ок, никто, кроме меня, не умеет программировать на нормальных языках, делаю я. У меня, кстати, остались наработки с прошлого проекта, но мы всей группой разработки уперлись в пользовательский интерфейс. Коротко говоря, 3 раза его переделывали, хотя лично мне понравился самый первый вариант, предложенный веб-программистом, для этого привлекая внешнего дизайнера на деньги, которые уже закончились. В итоге, мне все это надоело.

Я пытался общаться с коллегами один на один, чтобы как-то подбодрить их, все-таки игру ведь делаем. На созвонах я вообще старался досконально все обсудить, чтоб ни у кого не было недопонимания. Но из-за этих разговоров я окончательно перегорел. Добил разговор с Максом в один из последних дней в студии. Мало того, что он не умеет программировать на нормальном языке, только на Blueprints, так еще не хочет ничему учиться, в том числе познавать историю информатики и другие науки, необходимые уважающему себя программисту. 

В итоге, я так понял, что никто не стремится к результату. Даже для Кирилла (который шеф) результат нечто непонятное, что получить гораздо проще, чем на самом деле, еще максимум год, и убийца Eve Online будет готов.

В ноябре 2021-года на очередном созвоне, во время спора о какой-то незначительной детали я высказал шефу: «Ты изначально взял слишком высокую планку, но за прошедший год не хотел ни развиваться, ни меняться; коллеги не стремятся работать на результат, им достаточно их 8 часов 5 дней в неделю. Я не могу работать не на результат. Последние 4 месяца разработка вообще встала. Программная часть намного опережает арт часть. По арту совсем ничего не делается. Ты не знаешь игры, зачем в них лезешь? Тем более в MMORPG? Почитал бы книжки, поразвивался. Взял бы что-нибудь попроще для начала. Я присоединился к твоей команде, предполагая, что у тебя хоть деньги есть, тогда бы с моими знаниями могло бы что-нибудь получиться. Но у тебя не только нету достаточно денег, ты не хотел слушать мои советы».

После этого мы распрощались. Ну, не люблю я ругаться, вынуждают сволочи.

Все-таки я возлагал надежды, что, наконец, в этой студии под моим руководством мы выпустим игру. Но убедившись в том, что в играх коллеги не далеки, развиваться они не хотят (самый важный момент), игровая индустрия для них “по барабану”, в течение года гейм дизайнер не произвел ни строчки видения игры, о чем игра, как она будет развиваться, о каком ее будущем может быть речь?

Сайт игры

воскресенье, 16 января 2022 г.

«МЫ». Евгений Замятин

Юрий "yurembo" Язев

Оруэлл, не стесняясь, почти полностью позаимствовал идею Замятина о тоталитарном государстве. Он один из первых ознакомился с произведением Замятина, выступив рецензентом романа в Англии. Свое, во многом черпающее идеи из замятинского романа, произведение «1984» Оруэлл опубликовал только после смерти автора «МЫ». При этом «1984» в последнее время стало более попсовым.

«МЫ» подается в виде конспекта главного персонажа. «1984» - более привычно, в виде повествования автора о событиях, происходящих вокруг главного героя. В остальном идут сходства. Но в то же время читать интересно оба произведения, не важно, в каком порядке, каждое из них, имея общие черты, находится по разные стороны пропасти, рассказывая при этом приблизительно об одном.

Во многом похожие персонажи, условия их существования, их поведение. Название гос. структур, их функции. Искать и находить пересечения романов можно долго. Даже их концовки схожи.

Между тем, имеются различия. Я даже не буду упоминать про космический корабль «Интеграл», постройка которого ведется на протяжении всего романа «МЫ». Он, по большей части, создан для общей картины, для придания смысла жизни главного героя. В романе «МЫ» жирной линией через всю книгу прочерчена романтическая история. Я бы сказал: через чур жирной. В «1984» тоже есть любовная история, но она меркнет за яркими описаниями пыток.

«МЫ» так же повлиял и на другие антиутопии. В том же «Дивном новом мире» ощущается его огромный отпечаток. Хотя и различия существеннее. С первых строк создается впечатление об утопическом мире, но все далеко не так благополучно, как кажется. Здесь тоже присутствует тотальный контроль, сегрегация людей с самого рождения на всю жизнь, разделение на людей и недолюдей.

пятница, 14 января 2022 г.

Портфолио

(предыдущие проекты можно увидеть на странице: https://yazevsoft.blogspot.com/2013/11/blog-post.html) 

17) Pulse Online – (2020 – 2021) — MMORPG про исследование космоса, далеких галактик, про войны между кланами, захват космических станций, торговлю сырьем и оружием и обо всем таком. Проще говоря, аналог Eve Online. Разрабатывался компанией Pulse Online Game. В проекте я был главным разработчиком, занимался серверной частью и дополнительным программированием. Принимал участие в планирование и решении всех технических вопросов. Для разработки игры использовался Unreal Engine 4.




понедельник, 13 декабря 2021 г.

Внимание, товарищи, хотите написать самый никчемный вирус в киберпространстве?

    #include <iostream>

    int main()

    {

        std::cout « 5.44; // любое вещественное значение

    }

Компилируем в Visual Studio 2019 под x64 в режиме Release с отключенной оптимизацией, запускаем.

Если у вас установлен продукт от Лаборатории Касперского, то он поднимет красную тревогу и предложит лечить с удалением и перезагрузкой.

вторник, 7 декабря 2021 г.

Обзор книги "Нажми Reset"


Юрий "yurembo" Язев

Наконец-то, дошли руки до второй книги Джейсона Шрейера «Нажми Reset».


Если мне память не изменяет, первая его книга про игровую индустрию «Кровь, пот и пиксели» была про романтику и вдохновение. Конечно, не все так гладко и безоблачно, но общий посыл такой.

Тогда, как вторая книга рассказывает о мясорубке, творящейся в индустрии, как людей нанимают, но вскоре (например, по завершению, отмене проекта или другой причине) увольняют, и им, в условиях США, приходится переезжать в другую часть страны. Описаны многочисленные случаи бездарного управления. Я словно на себе ощущал тяжесть каждой главы. Но особенно у меня подгорело от главы №6, в которой рассказывается о том, как известный бейсболист, заработав за свою успешную спортивную карьеру охрененное количество бабла, ничего не смысля в геймдеве, а только по вечерам играя в WoW, решил купить студию и сделать убийцу World of Warcraft.

Забегая вперед, имея студию профессионалов, миллионы баксов, у него ничего, в итоге, не получилось.

Между тем, главный посыл книги, к чему призывает автор — это создание профсоюзов для защиты работников игровой индустрии. Лично я воздержусь от комментариев по этому вопросу.

Тем не менее, в Российской действительности всё намного сложнее или проще, тут с какой стороны смотреть, чем в рассмотренной Шрейером США. У нас, по большому счету, игровая индустрия сконцентрирована в Москве и Питере. Если ты там зародился/переехал, то больше никуда переезжать не надо. Пытаются появляться студии в Екатеринбурге, Новосибирске, ряде городов на юге страны, сибирских городах могучая MyTona в последние годы размахнулась, но все это лишь вспышки света во мраке.

Не было бы счастья, да несчастье помогло. Наступил блокаут, всех разогнали по домам, всеобщая удаленка, хоть в чем-то плюс. Можно работать с моих любимых Уральских гор.