HLFX.Ru Forum
Показать все 39 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Компьютерные игры (https://hlfx.ru/forum/forumdisplay.php?forumid=19)
-- Грязные трюки разработчиков в коде игр (https://hlfx.ru/forum/showthread.php?threadid=5124)


Отправлено Дядя Миша 10-06-2018 в 12:06:

Грязные трюки разработчиков в коде игр

Тут Г-Мен скинул ссылку на цикл статей про грязные трюки, я решил почитать чем народ занимается и заодно дать комментарий к каждому описанному случаю, моё мнение. Чтобы у народа не сложилось превратного представления о том, что есть хак, а что нет. Потому что, вот к примеру наш Мастер, он уверен что хак - это что-то анальное.

Пост будет обновляться по мере чтения. (комментарии имеют то же название, что и сами истории)

Часть первая: https://habr.com/post/328552/

Сними меня в самом хорошем ракурсе
В этой истории описан случай самого худшего говна, которое только может случится. Причём хак с поворотом на 90 градусов вполне может решить проблему полностью, не приводя больше ни к каким проблемам. Нормальное решение.

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

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

Десятичный код
А в ксаше тоже такое гамно есть, правда оно обвёрнуто в
#ifdef HACKS_RELATED_HLMODS

Все знаки говорят «нет-нет»
Тут немного подробнее, т.к. речь идёт о хорошо знакомом коде. В Q3 все события помещаются в пул событий и потом последовательно обрабатываются. Иногда это просто параметр, а иногда - кусок памяти, например с пакетом сетевого буффера. Очевидным решением было бы выделять маленький кусочек памяти на 4 байта и передавать его, но это бы привело к фрагментации памяти и замедлило бы скорость. Т.е. это хак ради оптимизации. Я такое не очень жалую, лично для меня проще заменить аргументы в "нескольких сотнях функций", потому что в реальности эта замена занимает 5-6 минут от силы. Иное дело, если мы нарушаем целостность API таким образом. Но здесь об этом речи не идёт.

Липкие жулики
иерархическое дерево ориентированных граничных контуров - это Axis Aligned Bounding Box Tree судя по всему. В квейках подобные деревья используютс для быстрого поиска энтити во время трассировки, чтобы уже конкретно с ней проверить точную коллизию. Если хотите посмотреть как выглядит трасса только по этому дереву без дополнительных проверок - в моём VHLT с тенями, установите для env_static "zhlt_shadowmode" "0". Короче говоря использовать подобное дерево для конечной проверки коллизий можно лишь в том случае если у вас архитектура не сложнее уровней первого вольфенштейна. А упоминание хавока вообще ни к селу ни к городу. Прилипание к стенкам это общая проблема большинства коллижен-детекторов, обычно с нею борются вводя охранный контур в 1 см\пиксель\юнит, чтобы успеть задетектировать начало столкновения. Во втором и третьем квейке, как я уже упоминал в коде физики введён маленький овербоунс, чтобы игрока, прилипшего к стенке тут же от нее оттолкнуло. Вообщем это не частная проблема неизвестного анонимуса и не грязный трюк. Тут каждый извращается как может.

Я и мои патчи
Вот как раз то, о чём я говорил - первая проблема решилась парой строк и человек начал этот подход применять повезде, а новые проблемы парой строк уже не решались. В итоге наказал сам себя.

В гневе я страшен
К программированию прямого отношения это не имеет, это скорее грязный психологический трюк. Не знаю, прокатит ли такое с нашим менталитетом. Если мне доведётся сделать что-то подобное, то вместо фотографии я запишу на микрофон как я страшно кричу, уверен это гораздо действенее. Ну или помните как DJ Грув страшно кричал, када ему всякую попсу предлагали поставить? Вот типа тово

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

Часть вторая: https://habr.com/post/343516/

День, когда у Super Time Force сели батарейки
память перемотки - это Undo buffer. Ктож там эти статьи переводит-та... Вообще такие геймплейные задачи втупую не решаются. Хрен его знает что там было на самом деле и почему они сделали так. Слишком мало информации. Но вводить игрока в заблуждение индикатором разряда батарей это низко и подло ящитаю.

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

Унесённые бе́лками
Ну в халфе тоже всё завязано на тайминг анимаций, ничего необычного. Я уже молчу про баг, который недавно Ксерокс раскопал, что там доворот до ideal_yaw считается с неправильной скоростью. В халфе, я имею в виду.

Рекламофобия
Вот тут я вообще не понял ни причины ни решения. Либо перевод кривой, либо что-то такое, с чем я не сталкивался.

И… снято!
Пример того как временные хаки поселяются навсегда.

Чёрный лёд, белый шум
Вообще говоря весьма много эффектов базируются на привязке\трансформации положения камеры игрока. Вы думаете как зеркало устроено? Это просто трансформация камеры зеркального прохода о плоскость зеркальной поверхности. Это абсолютно нормальный подход, ни о каком хаке, тем более грязном речи не идёт. Мы же не считаем хаком спрайты, которые всегда ориентированы на камеру игрока. Я ж говорю, путаница с терминами.

Отправляйся прямиком в тюрьму
Перевод скорее всего кривой, ребята просто написали враппер.

DLL-it yourself
Про совпадающие наборы инструкций я кое-что слышал, но на практике не сталкивался. Не знаю что тут грязного или трюкового.

Мост слишком далеко?
К коду не имеет отношения, но если человек не силён в моделировании, то что ему остаётся?

Звучит неплохо!
Да тоже нормальное решение. У меня на Aureal Vortex если _snd_mixahead равен 0.1 звук дико хрипит. Поэтому в ксаше, я подкрутил квар до 0.12 и все хрипы полностью прошли. Я не знаю с чем это связано, может с деградацией железа, может с обновлением винды, но точно помню что раньше ничего не хрипело и со значением 0.1

Часть третья: https://habr.com/post/344822/

Про экран загрузки
Ксаш такое проделывает когда переключается между играми. Но между уровнями это маразам. Очевидно здесь всё пошло не так с самого начала.

ОЗУ и Крэш
С нехваткой памяти рано или поздно каждый столкнётся. Памяти всегда нехватает.

Внимание к деталям
Турки атомстили немцам за своего дедушку, а немцы даже ни о чём не догадались.

Важен не размер...
Это маркетинговые штучки на самом деле. Потому что карты на 512мб дороже стоят.

Куча мучений
Отпечатки для уменьшения фрагментации тоже нормальный подход, хотя и не всегда применимый.

Пакуем пиксели
Это называется реверс-инжинеринг, если вдруг кто не в курсе, что вряд ли

Just brew it
Ничего не могу сказать, слишком переврано всё.

Четвертая часть: https://habr.com/post/358704/

Благодарим за игру!
Стрёмная хрень на самом деле. А если память повреждалась не при выходе, а задолго до? Тут нечем гордится, идиотизм какой-то.

Стопроцентно чистые фруктовые соки
Хотел бы я конечно узнать какой именно движок они имели в виду. Но описанная ситуация вполне реальная. А вот кто в ней виноват - авторы движка или рассказчик понять невозможно.

Перемотка вперёд
Я уже смутно помню то время, но в NBA JAM TE была батарейка, а не флэш-память. То есть либо третья черепашка брешет, либо моя память. К тому же на территории России поддельные китайские картриджы были вообще без батареек, естественно и там ничерта не сохранялось. То есть дважды печалька.

Задымление
Иными словами нарисовать кучу партиклей на PS2 дешевле, чем две комнаты. Что-то с филлрейтом интересное. Или опять враньё и неточности.

… а может сюда?
Похоже на заметание мусора под диван.

Подстандарт
Это соотношения сторон экрана вообще жуткая головная боль.

Стремление к константам
#define true false // happy debugging!

Реальность кусается
Я в новом билде ксаша кидаю исключение во время ошибки в var-args. Настала полная гармония. До сих пор удивляюсь почему такое простое решение мне так долго не приходило в голову. Теперь если там неправильные аргументы, вместо сообщения выводится "exception in vsnpritnf" и васякот.

Ваши данные готовы
под дурацкие требования всегда появляются еще более идиотские хаки.

Камера-обскура
Вот до чего доводит поиск класса камеры в исходниках Ку3!

Хексапильность
Ну то же что и с EMM386. По рукам лопатой и на мороз.

Короткий стек
Прикольно.

Назад к основам
Да иногда вот так смотришь и думаешь, ну всё же одинаковое, ну почему по разному. А когда находишь причину долго смеешься.

Мойщики окон
В этой истории самое главное, что они потом сделали нормальное исправление, а не оставили как есть на 20 лет.

Результаты могут отличаться
Ну вот очередные хитрости, на очередные идиотские ограничения.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 10-06-2018 в 12:19:

Цитата:
Дядя Миша писал:
либо оффсет головного мозга. Это вот как раз тот случай, когда надо на мороз


Ну зачем сразу на мороз-то? Пусть человек пишет например систему сериализации. Правда в унреале (вот эта штука GEngineLoop именно оттуда) уже есть такая система...

ЗЫ. Я хз может это связано с тем что энджин-луп живет в модуле Launch а доступ туда пытаются получить из кода игры...


Отправлено Дядя Миша 10-06-2018 в 12:32:

Цитата:
Government-Man писал:
Пусть человек пишет например систему сериализации

В сериализации тоже можно всё оформить в красивую табличку с offsetof.
Если человек куда-то лезет по оффсетам не имея на то реальной причины - это сразу на мороз. Родина ему компилятор дала не для этого.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 10-06-2018 в 12:37:

Цитата:
Дядя Миша писал:
В сериализации тоже можно всё оформить в красивую табличку


Прошлый век жы
Сейчас модно использовать кодогенерацию для этого.


Отправлено Дядя Миша 10-06-2018 в 13:44:

Ну ладно, три части прокомментировал, четайте. Четвертую попозжа.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 10-06-2018 в 14:00:

Цитата:
Дядя Миша писал:
Ну в халфе тоже всё завязано на тайминг анимаций, ничего необычного.


Ну одно дело если у монстра что-то завязано на тайминг своих же анимаций. Совсем другое - когда у тебя стоящая где-то на уровне крыса активирует триггер.


Отправлено Дядя Миша 10-06-2018 в 15:16:

Цитата:
Government-Man писал:
Совсем другое - когда у тебя стоящая где-то на уровне крыса активирует триггер.

вообще-то халфовские эвенты позволяют активировать цели на карте. Барник на c1a0 поворачивает своё кресло таким образом, если не знал.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 10-06-2018 в 15:58:

Спасибо.


Отправлено Government-Man 10-06-2018 в 16:03:

Цитата:
Дядя Миша писал:
Барник на c1a0 поворачивает своё кресло таким образом


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


Отправлено Crystallize 10-06-2018 в 16:10:

Прочитав все статьи я понял ваше презрение к интеллекту аудитории Хабра.


Отправлено XaeroX 10-06-2018 в 16:18:

Все эти хаки произрастают из одного - непонимания важности организации грамотного рабочего процесса.
Вы не поверите, сколько людей до сих пор - и у нас (что ожидаемо), и на Западе (увы) - не осознают необходимость банальных вещей типа обязательного код-ревью, юнит-тестов и code coverage, чёткого стиля кодирования и линтеров. Поначалу головокружение от успехов - "пока в Вилларибо покрывают код тестами, в Виллабаджо уже релиз, и считают хрустящие купюры". Но жизнь не простит небрежности. Через год в Вилларибо будут спокойно и без овертаймов выкатывать апдейт за апдейтом, а в Виллабаджо будут ночами приделывать головы к поездам (или наоборот).

__________________

xaerox on Vivino


Отправлено nemyax 10-06-2018 в 16:40:

Цитата:
Government-Man писал:
Но вот если бы анимация барника на одном конце карты активировала какой-нибудь левый скрипт на другом ее конце - это было бы уже крайне неочевидным решением.

О, такого полно в миссиях к классическим Thief-ам.


Отправлено Дядя Миша 10-06-2018 в 18:35:

Цитата:
Government-Man писал:
Но вот если бы анимация барника на одном конце карты активировала какой-нибудь левый скрипт на другом ее конце - это было бы уже крайне неочевидным решением

Технически никто не мешает такое сделать например - возможность есть.
Да наш Доктор Тресни обязательно бы сделал.

Добавлено 10-06-2018 в 21:35:

Я дописал комментарии, наслаждайтесь.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 10-06-2018 в 19:22:

Цитата:
Дядя Миша писал:
Технически никто не мешает такое сделать например - возможность есть.


Так технически есть возможность и к переменным по оффсетам обращаться. Но ты почему-то хочешь за такое на мороз выгонять.


Отправлено nemyax 10-06-2018 в 19:37:

Цитата:
Government-Man писал:
Так технически есть возможность и к переменным по оффсетам обращаться. Но ты почему-то хочешь за такое на мороз выгонять.

Можно же хотя бы похожий структ объявить и не издеваться.


Отправлено Government-Man 10-06-2018 в 19:53:

Цитата:
nemyax писал:
Можно же хотя бы похожий структ объявить и не издеваться.


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


Отправлено nemyax 10-06-2018 в 19:57:

В шоколаде, да не на морозе =)


Отправлено Crystallize 11-06-2018 в 09:48:

Цитата:
Дядя Миша писал:
Хотел бы я конечно узнать какой именно движок они имели в виду. Но описанная ситуация вполне реальная. А вот кто в ней виноват - авторы движка или рассказчик понять невозможно.

Неужто ты не пробовал кликать по ссылке в статье? Lithtech. https://www.penny-arcade.com/comic/2002/02/11


Отправлено Government-Man 11-06-2018 в 13:13:

Цитата:
XaeroX писал:
вещей типа обязательного код-ревью, юнит-тестов и code coverage, чёткого стиля кодирования и линтеров


Это все полезно и нужно, и обычно в той или иной степени применяется. Но это не спасает от ситуации вида "Мы тут в нашу игру поиграли - не прикольно ни разу, у нас послезавтра релиз - надо бы к нему успеть все переделать"

Вот этот фактор очень сильно отличает геймдев от разработки обычного софта


Отправлено Дядя Миша 11-06-2018 в 13:56:

Я бы посмотрел, как нашему Ксерокс все юнит-тесты и коды ревью помогли заранее узнать, что с немецким переводом на CD не хватает места для игры. Ну вот нехватает и всё тут.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ComradeAndrew 11-06-2018 в 14:47:

Цитата:
Дядя Миша писал:
Я бы посмотрел, как нашему Ксерокс все юнит-тесты и коды ревью помогли заранее узнать, что с немецким переводом на CD не хватает места для игры. Ну вот нехватает и всё тут.


Очень просто. Пишем тест проверки размера еженедельной сборки и в процессе перевода на немецкий сразу отлавливаем эту ситуацию и заставляем переводчиков ужимать контент.


Отправлено Дядя Миша 11-06-2018 в 14:55:

ComradeAndrew немецкий тут просто для примера. Вылезает ситуация о которой не то что протестировать - никому даже и в голову не пришло что такое возможно. То есть руководствоваться надо пролетарским чутьём и накопленным опытом. А тесты это страховка от облизъян.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ComradeAndrew 11-06-2018 в 15:04:

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


Отправлено XaeroX 11-06-2018 в 15:55:

Цитата:
Government-Man писал:
Но это не спасает от ситуации вида "Мы тут в нашу игру поиграли - не прикольно ни разу, у нас послезавтра релиз - надо бы к нему успеть все переделать"

От этой ситуации защитит найм адекватного продакт-менеджера. И вообще адекватный найм.
Цитата:
Government-Man писал:
Вот этот фактор очень сильно отличает геймдев от разработки обычного софта

Обычный софт может точно так же не понравиться пользователю.
Цитата:
Дядя Миша писал:
Вылезает ситуация о которой не то что протестировать - никому даже и в голову не пришло что такое возможно.

Такое случается, конечно. Но реже, чем банальные ошибки, которые легко было выцепить в тестах. Я бы мог рассказать поучительный пример про релиз десктопной Алисы, но не буду, ты ж всё равно продолжишь демагогию.
Цитата:
Дядя Миша писал:
пролетарским чутьём

Нет уж. Разработка софта - это не аннексия Крыма, тут как следует думать надо, а не пролетарским чутьём руководствоваться.

__________________

xaerox on Vivino


Отправлено Government-Man 11-06-2018 в 18:36:

Цитата:
XaeroX писал:
Обычный софт может точно так же не понравиться пользователю


Требования к обычному софту не меняются ежедневно.


Отправлено XaeroX 11-06-2018 в 19:37:

Government-Man
А к чему требования меняются ежедневно? К играм, что ли?

__________________

xaerox on Vivino


Отправлено Дядя Миша 11-06-2018 в 19:54:

Цитата:
XaeroX писал:
Я бы мог рассказать поучительный пример про релиз десктопной Алисы

Так я потому и развожу демагогию, что ты не рассказываешь поучительных примеров. А рассказывал, мы бы слушали.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 11-06-2018 в 19:59:

Government-Man
У плохого менеджера проекта они могут меняться хаотически, но тут дело не в специфике софта, а в специфике менеджера.


Отправлено Government-Man 11-06-2018 в 21:40:

Цитата:
XaeroX писал:
А к чему требования меняются ежедневно? К играм, что ли?


Конечно, или по-твоему игровые фичи и механики придумываются все заранее и вводятся раз и навсегда?

Цитата:
nemyax писал:
У плохого менеджера проекта они могут меняться хаотически, но тут дело не в специфике софта, а в специфике менеджера.


Ну, теперь видимо пришел мой черед... ты во многих игровых проектах участвовал?


Отправлено nemyax 11-06-2018 в 21:49:

Government-Man
Ни в одном, но проект-манагеров повидал разных.


Отправлено XaeroX 12-06-2018 в 06:06:

Цитата:
Government-Man писал:
Конечно, или по-твоему игровые фичи и механики придумываются все заранее и вводятся раз и навсегда?

То есть если не "ежедневно" - то альтернатива только "раз и навсегда"?
Но вообще говоря, да, основные вещи продумываются заранее. Это называется "диздок". Есть фирмы, использующие порочные практики разработки - но это не повод обобщать на весь геймдев.

Хотя, видя презрительное отношение к геймдеву со стороны "обычных" программистов - я начинаю думать, может, и правда геймдев проклят? Я-то в нём исключительно в режиме хобби...

__________________

xaerox on Vivino


Отправлено Дядя Миша 12-06-2018 в 06:41:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 12-06-2018 в 10:48:

Цитата:
XaeroX писал:
основные вещи продумываются заранее. Это называется "диздок"


Because of the dynamic environment of game development, the document is often changed, revised and expanded as development progresses and changes in scope and direction are explored. As such, a game design document is often referred to as a living document, that is, a piece of work which is continuously improved upon throughout the implementation of the project, sometimes as often as daily.

https://en.wikipedia.org/wiki/Game_design_document

Цитата:
XaeroX писал:
презрительное отношение к геймдеву со стороны "обычных" программистов


Это со стороны веб-программистов что-ли?


Отправлено XaeroX 12-06-2018 в 14:47:

Цитата:
Government-Man писал:
Это со стороны веб-программистов что-ли?

Не знаю, наверное, и с их стороны. Я с веб-программистами не пересекался, они на конференции по С++ не ходят.

Добавлено 12-06-2018 в 21:47:

Цитата:
Government-Man писал:
Because of the dynamic environment of game development, the document is often changed, revised and expanded as development progresses and changes in scope and direction are explored. As such, a game design document is often referred to as a living document, that is, a piece of work which is continuously improved upon throughout the implementation of the project, sometimes as often as daily.

Каким образом эта пространная цитата опровергает моё утверждение о том, что основные вещи продумываются заранее?

__________________

xaerox on Vivino


Отправлено Government-Man 12-06-2018 в 15:07:

Цитата:
XaeroX писал:
Каким образом эта пространная цитата опровергает моё утверждение о том, что основные вещи продумываются заранее?


В общем-то, никаким. Она лишь еще раз подчеркивает, что в процессе разработки все равно все по 10 раз меняется.


Отправлено ~ X ~ 13-06-2018 в 08:36:

Хрена се вы баяны откопали. Я же это постил несколько лет назад. И про геометрию ПС2, и про запасной массив, жрущий память...
Всё с гамасутры. И в оригинале порой читать веселее.

Добавлено 13-06-2018 в 11:36:

Десятичный код
Кстати, этого дерьма я насмотрелся в Spirit Of Hack-Life. У себя я решил причины таких проблем. Кроме того, существуют патчи для карт, если уж дизайнер отморозил совсем дикий бред.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 13-06-2018 в 10:09:

Цитата:
~ X ~ писал:
Я же это постил несколько лет назад

Да чевоуж там, скажи что ты лично все эти хаки в играх и сделал, 30 лет назад

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 13-06-2018 в 11:40:

Дядя Миша чтоб мне ещё твои достижения присваивать? Не вижу смысла.

Добавлено 13-06-2018 в 14:40:

Вот это еще почитайте. Это классика! Это знать надо!

https://burrarum.livejournal.com/32707.html

Цитата:
Сидят, значит, свиньи с собаками в окопе и периодически из него выглядывают.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 13-06-2018 в 12:13:

Цитата:
~ X ~ писал:
Это классика! Это знать надо!

Ну а чтож такого? Вот пока Крым был украинский, там и свиньи были вражеские. А потом они полностью перешли на нашу сторону и разоружились перед партией!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 03:50.
Показать все 39 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024