(no subject)
Feb. 3rd, 2011 07:45 pmВ обсуждении к повсюду всплывающей флешке про солнечную систему я имел неосторожность заикнуться, что когда-то писал симулятор покруче этого. Выношу коммент в отдельный пост:
Естественно, меня попросили показать эту модель. Ну почему бы и нет: вот, там бинарник и исходники. Это, правда, не окончательный "релиз" - я точно помню, что в "финалке", которую я сдавал преподавателю, была звёздная сфера (в исходнике она тоже упоминается, а в бинарнике её нет почему-то), было контекстное меню с разными полезными командами, Солнце было просто жёлтым шаром без текстуры (а тут я баловался, натягивая всякую дрянь), у Земли висела космическая станция, была Луна, можно было включать "космический фонарик", чтобы не теряться в темноте, или просто включать глобальный свет, присутствовал тот самый lens flare, наличествовало разрешение 1024*768, и ещё до фига чего. Но полная версия, видимо, всё-таки безнадёжно проёбана, либо, в лучшем случае, валяется где-то на архивных дивидюках (а то и на сюдюках ещё). В общем, счастье, что я ещё хоть это нашёл.
Проге требуется d3drm.dll - я поклал либу в архив, так что работать должно. По крайней мере, у меня на семёрке запустилось. Работают курсорные клавиши, в сочетании с Ctrl они поворачивают камеру по осям. нажатие Shift ускоряет движение в тысячу раз, по-моему. Скорость времени регулируется Gray+/Gray-. Выглядит как говно, финальная версия, впрочем, выглядела не сильно лучше. Не поручусь, к сожалению, и за расстояния меж планетами - вполне может быть, что тут они отмасштабированы по тем же причинам, что и размер Солнца; а вот за размеры планет поручусь.
Но уж раз я не поленился написать этот пост, не вижу повода, чтобы не рассказать о других прогах, которые я помню. В общем-то, я уже пару рассказов делал (раз, два), но есть и ещё что вспомнить.
Первая памятная программка - это летающий шарик. Ещё в школе нас научили кодить на QuickBasic (я, вобще-то, немного кодил ещё на советских "Фрегатах", но о тех временах у меня уж никаких воспоминаний не осталось), и одна из программ, которые мы писали, была простая анимация. Шарик (точнее - кругляшок) летал по двухмерному полю, отбиваясь от стенок, при этом угол отражения был равен углу падения.
С этой простейшей программой я баловался многие месяцы. Задавал в цикле рандомные цвета и размеры шарика, менял формулы полёта и отражения, в результате на экране получались красивые узоры. Будь я постарше, я бы упарывался веществами, пырился в эти узоры и мне было бы сладко; но тогда я упарывался только спортом и компьютерами.
Чуть позже я написал на том же кьюбейсике первую свою игрушку - смешной текстовый квест. Вдохновили меня на него замечательные юмористические переводы Taralej & Jabocrack; играя в переведённый ими Space Quest я несколько раз был готов умереть со смеху. Квест получился не очень длинный, зато очень ветвистый, на каждый вопрос было три-четыре варианта ответа - а в коде это всё выглядело как пара сотен переходов GOTO (да, я былупорот упорен!). Ещё в начале игры предлагалось приложить ладонь к экрану (в это время на экране рисовался силуэт ладони; я заёбся на бейсике его делать) на предмет сканирования ауры. Потом шло сканирование (крутой спецэффект!), и рандомайзер решал, допускать ли игрока в игру. Отакота.
Чё ещё... "Полупроводник" - файловый менеджер под линупс, написанный на Kylix (это уже институт)? Не, там, кроме названия, ничего крутого не было.
Или многочисленные плагины и утилиты под Total Commander, среди которых есть парочка реально охуительных. Например SuperWDX, который мы писали вдвоём с Димой Воротилиным - я писал плагин, он настроечную оболочку к нему. Множество идей я реализовал, но ещё больше забросил - поддержка публично распространяемого софта оказалась жутким поглотителем времени.
Ещё с Диманом мы написали мегаохуенный клавиатурный менеджер, поддерживающий макрокоманды и плагины. Он был настолько охуенен, что мы даже подали заявку на участие в каком-то межуниверситетском конкурсе, и даже хотели ехать лично представлять свою программу; с поездкой обломилось (кафедра не дала денег на билеты), нашу прогу приняли, но нам даже результаты конкурса не сообщили.
А вот, вспомнил ещё: на втором или третьем курсе мы изучали машину Тьюринга и её частный случай - машину с неограниченными регистрами. Препод давал нам много задач на МНР, и я не поленился написать свой интерпретатор кода для этой машины. Естественно, как только я закончил её писать, задачи на МНР тоже закончились.
Помню программу, с помощью которой реализовал пример задачи, решаемой полным перебором. Задача заключалась в расстановке произвольного количества шахматных коней на доске произвольного размера так, чтобы они друг друга не били. В программе была возможность включения анимации, показывающей ход поиска, плюс можно было включать разные оптимизации - например, перебор можно было ограничивать, отсекая заведомо неправильные позиции, и в реальном времени видеть выигрыш в количестве итераций...
Да, до хуя я всего писал. Надо будет, пожалуй, как-нибудь отыскать архивы (наверняка беспонтовая идея, все бекапные диски остались в другом городе у брата), посмотреть, обмазаться, поностальгировать...
Фигня сиё есть. Ни масштабы, ни размеры не соблюдены.
В институте как-то вызвался я писать курсовую - трёхмерную модель солнечной системы. Вызвался - и только потом подумал, что ни одного инструмента для работы с 3D-моделями я не знаю, а изучить, скажем, OpenGL, не успеваю.
Самое простое и быстрое, что нашлось - DarkBasic, на котором я со всей тщательностью и соорудил нашу систему, руководствуясь учебником астрономии и большой советской энциклопедией. Получилось почти как в Футураме - 80000 строк кода на бейсике.
Вот там учитывались и размеры планет, и расстояния меж ними - кроме Солнца; на то, чтобы нарисовать шар таких размеров, у системы не хватало ресурсов. Освещённость бейсик рассчитывал сам, а из спутников у меня хватило терпения сделать только Луну. Зато можно было летать от планеты к планете, менять скорость и направление течения времени, грабить корованы. Дальше я уже увлёкся графоном - повесил на планеты текстуры, закодил Lens flare от Солнца, подвесил на земную орбиту модель Вавилона-5, и в таком виде сдал курсовую.
Естественно, на компах того времени всё это тормозило не по детски, да и сейчас будет тормозить, по понятным причинам.
Но зато у меня, как у настоящего демиурга получилось оценить размер Солнечной системы.
Естественно, меня попросили показать эту модель. Ну почему бы и нет: вот, там бинарник и исходники. Это, правда, не окончательный "релиз" - я точно помню, что в "финалке", которую я сдавал преподавателю, была звёздная сфера (в исходнике она тоже упоминается, а в бинарнике её нет почему-то), было контекстное меню с разными полезными командами, Солнце было просто жёлтым шаром без текстуры (а тут я баловался, натягивая всякую дрянь), у Земли висела космическая станция, была Луна, можно было включать "космический фонарик", чтобы не теряться в темноте, или просто включать глобальный свет, присутствовал тот самый lens flare, наличествовало разрешение 1024*768, и ещё до фига чего. Но полная версия, видимо, всё-таки безнадёжно проёбана, либо, в лучшем случае, валяется где-то на архивных дивидюках (а то и на сюдюках ещё). В общем, счастье, что я ещё хоть это нашёл.
Проге требуется d3drm.dll - я поклал либу в архив, так что работать должно. По крайней мере, у меня на семёрке запустилось. Работают курсорные клавиши, в сочетании с Ctrl они поворачивают камеру по осям. нажатие Shift ускоряет движение в тысячу раз, по-моему. Скорость времени регулируется Gray+/Gray-. Выглядит как говно, финальная версия, впрочем, выглядела не сильно лучше. Не поручусь, к сожалению, и за расстояния меж планетами - вполне может быть, что тут они отмасштабированы по тем же причинам, что и размер Солнца; а вот за размеры планет поручусь.
Но уж раз я не поленился написать этот пост, не вижу повода, чтобы не рассказать о других прогах, которые я помню. В общем-то, я уже пару рассказов делал (раз, два), но есть и ещё что вспомнить.
Первая памятная программка - это летающий шарик. Ещё в школе нас научили кодить на QuickBasic (я, вобще-то, немного кодил ещё на советских "Фрегатах", но о тех временах у меня уж никаких воспоминаний не осталось), и одна из программ, которые мы писали, была простая анимация. Шарик (точнее - кругляшок) летал по двухмерному полю, отбиваясь от стенок, при этом угол отражения был равен углу падения.
С этой простейшей программой я баловался многие месяцы. Задавал в цикле рандомные цвета и размеры шарика, менял формулы полёта и отражения, в результате на экране получались красивые узоры. Будь я постарше, я бы упарывался веществами, пырился в эти узоры и мне было бы сладко; но тогда я упарывался только спортом и компьютерами.
Чуть позже я написал на том же кьюбейсике первую свою игрушку - смешной текстовый квест. Вдохновили меня на него замечательные юмористические переводы Taralej & Jabocrack; играя в переведённый ими Space Quest я несколько раз был готов умереть со смеху. Квест получился не очень длинный, зато очень ветвистый, на каждый вопрос было три-четыре варианта ответа - а в коде это всё выглядело как пара сотен переходов GOTO (да, я был
Чё ещё... "Полупроводник" - файловый менеджер под линупс, написанный на Kylix (это уже институт)? Не, там, кроме названия, ничего крутого не было.
Или многочисленные плагины и утилиты под Total Commander, среди которых есть парочка реально охуительных. Например SuperWDX, который мы писали вдвоём с Димой Воротилиным - я писал плагин, он настроечную оболочку к нему. Множество идей я реализовал, но ещё больше забросил - поддержка публично распространяемого софта оказалась жутким поглотителем времени.
Ещё с Диманом мы написали мегаохуенный клавиатурный менеджер, поддерживающий макрокоманды и плагины. Он был настолько охуенен, что мы даже подали заявку на участие в каком-то межуниверситетском конкурсе, и даже хотели ехать лично представлять свою программу; с поездкой обломилось (кафедра не дала денег на билеты), нашу прогу приняли, но нам даже результаты конкурса не сообщили.
А вот, вспомнил ещё: на втором или третьем курсе мы изучали машину Тьюринга и её частный случай - машину с неограниченными регистрами. Препод давал нам много задач на МНР, и я не поленился написать свой интерпретатор кода для этой машины. Естественно, как только я закончил её писать, задачи на МНР тоже закончились.
Помню программу, с помощью которой реализовал пример задачи, решаемой полным перебором. Задача заключалась в расстановке произвольного количества шахматных коней на доске произвольного размера так, чтобы они друг друга не били. В программе была возможность включения анимации, показывающей ход поиска, плюс можно было включать разные оптимизации - например, перебор можно было ограничивать, отсекая заведомо неправильные позиции, и в реальном времени видеть выигрыш в количестве итераций...
Да, до хуя я всего писал. Надо будет, пожалуй, как-нибудь отыскать архивы (наверняка беспонтовая идея, все бекапные диски остались в другом городе у брата), посмотреть, обмазаться, поностальгировать...