Товарищ МАСК - Константин Владимирович Ежов
Книгу Товарищ МАСК - Константин Владимирович Ежов читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!
Шрифт:
Интервал:
Закладка:
```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 мне нравилось то, что метод работал почти как адаптивный – чем дальше от игрока находился объект, тем меньше подробностей обрабатывалось, и тем менее требовательным к процессору становился код. Пока шёл процесс, сделал глоток чая, тёплая горечь отозвалась бодрящей ясностью. Даже, пожалуй, чувствовалось какое-то детское волнение. Представлялось, как однажды игрок увидит, будто бы на экране он шагает по тёмному, замкнутому коридору, его окружает неизвестность, каждое движение приносит чувство таинственности и лёгкой тревоги – настоящая магия. Да блин, словно вновь переместился в свою юность и мочил всех тих врагов без разбору. А добавить кооперативный режим…. Точно говорю, бомба. Да, потом всё это позабылось, но сейчас-то ничего почти такого нет.
Работа шла почти машинально, по уже заведенному алгоритму. Как будто нащупываешь потайную дверь – улавливаешь, что где-то там, за поворотом, есть свет, и, следуя на ощупь, открываешь его, постигаешь потихоньку механику, будто бы всю жизнь был частью этого мира кодов и пульсирующих пикселей. А ведь мне программирование не давалось. Не хватало усидчивости. Нет, если припирало, то вполне себе сдавал всё что надо, но как только заканчивал, будто взрывался, вырываясь с рабочего места. А сейчас сижу, пишу и не жужжу. И мне даже это всё нравится. Вот и говори потом, что первично, тело или дух. Для меня в этом конкретном случае именно тело Маска подарила возможность делать то, что сейчас творил.
Ну, да ладно, пробую запустить тестовый рендер на небольшом участке карты. Лёгкая анимация показывает – сцена ожила: на экране меняется положение теней и проекций стен, меняется восприятие расстояния. Правда того давнего восторга всё равно не
Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.
Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.
- 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
- 2. Просьба отказаться от оскорблений, угроз и запугиваний.
- 3. Просьба отказаться от нецензурной лексики.
- 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.
Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.
Оставить комментарий
-
TatSvel219 июль 19:25 Незабываемая Феломена, очень интересный персонаж, прочитала с удовольствием! Автор-молодец!!!... Пограничье - Надежда Храмушина
-
Гость Наталья17 июль 12:42 Сюжет увлекательный и затейный,читается легко,но кто убийца,сразу было понятно.... Дорога к Тайнику. Часть 1 - Мария Владимировна Карташева
-
Гость Дарья16 июль 23:19 Отличная книга. Без сцен 18+, что приятно. Легкий и приятный сюжет. Благоразумная ГГ, терпеливый и сдержанный ГГ. Прочла с... Королева драконов - Анна Минаева