четверг, 24 сентября 2009 г.

Nethack: под капотом


Вчерашний хабрапост про nethack всколыхнул мой давно забытый интерес к этой Игре с большой буквы. У меня был давно один вопрос к сему славному творению нетленной программистской мысли, вопрос до боли простой: как это сделано?? В свое время, много-много лет назад, была у нас с братом задумка (C) написать пародию на Heroes of Might and Magic с русcко-украинскими сказочными реалиями. К сожалению, дело дальше пары пробных шаров не пошло, но мысль о том, как сделать универсальную расширяемую систему модификаторов/артефактов еще долго сверлила наши юные мозги. И вот передо мной оракул — игра на порядки сложнее по взаимодействию между актерами и окружающим миром, да еще с открытым исходным кодом, халлилуя!

Потратив полчаса втыка в забористый C-код, я нашел сокровенный ответ. Это хардкод. Да-да, все функции пестрят различными хитровыдуманными условными операторами и наивными численными константами. Вдобавок — явистам дальше не читать! — имена многих функций сокращены до 8-10 букв и не содержат гласных.

Приблизительно такое же разочарование меня постигло, когда я читал исходники — священное придыхание — DOOMа. Это C, и это хардкод. Никаких высот архитектурного гения. OMG, нет никакой ложки!

Наверно, если бы передо мной стояла такая же задача сегодня, я бы думал в сторону плагинов или скриптов. Или даже скриптовых плагинов.

В продолжение темы: настойчиво рекомендую потратить пятнадцать минут на сегодняшнюю статью Джоэля, магически пересекающуюся с данной темой.

1 комментарий: