Kniga-Online.club
» » » » Товарищ МАСК - Константин Владимирович Ежов

Товарищ МАСК - Константин Владимирович Ежов

Читать бесплатно Товарищ МАСК - Константин Владимирович Ежов. Жанр: Попаданцы год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:
бота и добавил несколько строк кода, чтобы создать эффект его движения:

```c

void UpdateNPC() {

float dx = player.x - npc.x;

float dy = player.y - npc.y;

float distance = sqrt(dx * dx + dy * dy);

if (distance detectionRange) {

npc.x += dx / distance * npcSpeed;

npc.y += dy / distance * npcSpeed;

}

}

```

Теперь каждый раз при запуске игры бот начинал следовать за игроком, словно его кто-то преследовал по пустым коридорам. Даже представил, что этот противник будет бормотать и издавать звуки – что-то зловещее, чтобы добавить немного напряжения. Однако, звуковая система для будущего была планом максимум, поэтому на время отложил эту задачу.

Идеи текли одна за другой, но с каждой новой функцией ему становилось сложнее поддерживать высокую производительность программы. Мощностей местных компьютеров, а тем более моего ноутбука, для всего задуманного было бы мало, и пришлось обдумывать, как сжать графику и текстуры, чтобы втиснуть всё в лимиты памяти. Периодически экран затухал, процессор перегружался, и часть моих кодовых идей требовала упрощения. Но это меня не останавливало. Какое там, когда чувствовал такой азарт, словно каждый новый шаг приносил меня ближе к созданию по-настоящему революционного проекта!

Пару дней в мастерской, пару ночей за кодом – и вот, наконец, выдался момент, чтобы отдохнуть. Нашёл тихое кафе неподалёку, заказал крепкий чай и свежую булочку, уселся у окна. Открытый ноутбук, хоть и грелся заметно, стойко справлялся с нагрузкой. Сосредоточиться на разработке для "прототипа Дум" в этих условиях было удивительно удобно: пульсирующий шум улицы за окном и гул разговоров вокруг погружали меня в состояние, где мысли шли яснее.

Я понимал: на настоящие 3D-ускорители здесь надеяться не приходится, потому главный вызов был в том, чтобы создать иллюзию трёхмерного пространства с тем, что имелось – в сущности, с теми же вычислительными мощностями, что и в середине восьмидесятых. Запустил компилятор, снова вернулся к коду. Словно бы мелькнуло нечто – магия простых вычислений, которые, при правильном использовании, творят чудеса.

```c

// Код для базовой структуры трассировки лучей

int rayCasting(float playerX, float playerY, float playerAngle) {

for (int x = 0; x screenWidth; x++) {

// Преобразуем угол для каждого пикселя на экране

float rayAngle = (playerAngle - fov / 2.0) + (x / (float)screenWidth) * fov;

float distanceToWall = 0;

// Проверяем пересечение с стенами

float eyeX = cos(rayAngle); // единичный вектор по оси X

float eyeY = sin(rayAngle); // единичный вектор по оси Y

while (!hitWall distanceToWall maxDepth) {

distanceToWall += stepSize;

int testX = (int)(playerX + eyeX * distanceToWall);

int testY = (int)(playerY + eyeY * distanceToWall);

// Проверка выхода за пределы карты

if (testX 0 || testX = mapWidth || testY 0 || testY = mapHeight) {

hitWall = true; // если за пределами — считаем, что есть "стена"

distanceToWall = maxDepth;

} else if (map[testY * mapWidth + testX] == '#') {

hitWall = true;

}

}

// Простое затемнение для глубины

int ceiling = (screenHeight / 2.0) - screenHeight / ((float)distanceToWall);

int floor = screenHeight - ceiling;

for (int y = 0; y screenHeight; y++) {

if (y ceiling) { setPixel(x, y, skyColor); }

else if (y ceiling y = floor) { setPixel(x, y, wallColor); }

else { setPixel(x, y, floorColor); }

}

}

return 0;

}

```

Смысл был прост: пока луч, выпущенный от игрока, не упирается в стену, он продолжает двигаться вперёд, точка за точкой, создавая иллюзию трёхмерного мира. В Raycasting мне нравилось то, что метод работал почти как адаптивный – чем дальше от игрока находился объект, тем меньше подробностей обрабатывалось, и тем менее требовательным к процессору становился код. Пока шёл процесс, сделал глоток чая, тёплая горечь отозвалась бодрящей ясностью. Даже, пожалуй, чувствовалось какое-то детское волнение. Представлялось, как однажды игрок увидит, будто бы на экране он шагает по тёмному, замкнутому коридору, его окружает неизвестность, каждое движение приносит чувство таинственности и лёгкой тревоги – настоящая магия. Да блин, словно вновь переместился в свою юность и мочил всех тих врагов без разбору. А добавить кооперативный режим…. Точно говорю, бомба. Да, потом всё это позабылось, но сейчас-то ничего почти такого нет.

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

Ну, да ладно, пробую запустить тестовый рендер на небольшом участке карты. Лёгкая анимация показывает – сцена ожила: на экране меняется положение теней и проекций стен, меняется восприятие расстояния. Правда того давнего восторга всё равно не

Перейти на страницу:

Константин Владимирович Ежов читать все книги автора по порядку

Константин Владимирович Ежов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Товарищ МАСК отзывы

Отзывы читателей о книге Товарищ МАСК, автор: Константин Владимирович Ежов. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*