Ужасы разработки и как я справляюсь
Сразу напишу основное занятие, это разработка компилятора и эмулятора. Я разрабатываю их в рамках игр, постоянно улучшая и исправляю жесткие баги. Я хотел бы написать о своей разработке, которую веду сейчас и свои эмоции.
Сразу приложу скриншот того что разрабатываю.
Я начал делать эту игру, потому что возникли проблемы с игрой Radio Attack. Там есть проблемы в дизайне, нет возможности играть в одиночку, и проблема с сетевой игрой, так как желающих купить игру оказалось 6 человек. Как бы я ни старался писать во все паблики, интереса было мало. Военную стратегию я разрабатывал с мотивацией особой, а именно, чтобы создать компилятор. Так было проще, игра 2d, почти ничего не требуется, только нужен компилятор и эмулятор. И вот, я достиг некоторого уровня, и перешел к другой игре.
Теперь игра про программирование прошивки для лифтов. На скриншоте как вы можете видеть есть только один лифт, из-за уровня сложности можно добавить ещё несколько лифтов.
Опишу как устроена работа игры. Пишется код, который с помощью компилятора создает буфер байт с нужным размером, потому это передается эмулятору. Когда запускается эмулятор на выполнение, то ему дается размер в опкодах, которые он может выполнить за раз. Например 20. Так можно запускать несколько эмуляторов и все будут быстро отрабатывать.
Я не писал тестов, и столкнулся с тяжелыми последствиями в разработке. Объясню. Написал код для лифта, запустил эмуляцию, и программа выкинула SEGFAULT. И начинаются ковыряние. Я даже не знаю порой как искать, мозги просто не работают. Вчера к примеру я не спал уже почти сутки и думал над задачей и было тяжело не думать о задаче из-за того, что она не решена. Пришлось снотворное пить.
Сегодня утром справился. В книге по эмоциональному интеллекту прочитал, что человек с развитым эмоциональным интеллектом может сам себя мотивировать когда нужно, и быть продуктивным. Эмоции наше всё, все наши решения принимаются эмоциями. Если я испытываю хорошее эмоциональное состояние, то оно передается в речи, письме. Те, кто читают, могут тоже зарядиться этим эмоциональный состоянием, так как оно пропитано этим.
Сложность начинается в том, что у меня сразу три системы, движок, компилятор, эмулятор. Когда происходит SEGFAULT, то я смотрю разумеется где падение. Нужно понять как оно произошло, а происходит оно в эмуляторе. Я немного научился с этим работать. Вот к примеру как у меня компилятор выводит printf в консоль, если собирать его с флагом DEBUG и без движка.
После слова токен, в [00xx] находится смещение начала опкода команды, это очень удобно как оказалось. Например в эмуляторе был баг с прыжками JC JNZ и тому подобные. Как оказалось, что эмулятор правильно прыгал, а компилятор не правильно учитывал смещение.
Есть ещё нераскрытые баги, которые мне предстоит исследовать. Повышается опыт ориентирования в отладке программ.
Чтобы поддерживать себя в хорошем эмоциональном состоянии, я делаю ритуалы. Когда справлюсь с какой-то маленькой задачкой, или сложной, но эмоционально значимой, то я делаю себе вознаграждение. Я иду покушать в столовую или кофейню. Чувствую себя как победитель. Потом приходишь домой и бывает неохота работать, но стоит пройти совсем немного времени, и меня опять тянет преодолевать сложности. Думаю, впереди мне предстоит создать ещё много разных эмуляций, пока не сделаю совершенство.
Кстати, насчет негатива, подумайте прежде чем что-либо кому-то говорить, даже писать посты, когда не в том настроении. У нас есть неокортекс, лимбическая система и рептильный мозг. Неокортекс отвечает за логические рассуждения, и когда эмоции зашкаливают, то неокортекс почти полностью отключается и включается рептильный мозг. В таком состоянии мы плохо анализируем и в содержании, в тексте можно заметить как человек нервничает даже.
Так что, я писал этот пост, когда у меня было очень крутое самочувствие. Ведь я не только создаю интересные вещи, но и ещё подпитываюсь от хороших комментариев, которые тоже дают буст к мотивации. Сложные вещи писать можно только с хорошей мотивацией и поэтому нужно быть, находится всегда в крутом эмоциональном состоянии.
Да, может эту игру про лифт я тоже не создам, но меня мотивирует сам процесс, я хочу создать такую систему, чтобы в игре можно было запустить компьютер и он работал как реальный. Это моя мечта. А пока, пока я делаю все для этого, я разрабатываю игры попроще, чтобы отточить инструменты, а потом заниматься уже сложной игрой и её нарративом.
Всё, я закончил.