Войти
ПроектыФорумОцените

Solar System II

#0
2:56, 8 янв. 2004

Здраствуйте и с Новым Годом!
Наконец решился посетить ваш форум. Классно тут у вас!

Хотел бы пообщаться с умными и опытными людьми, а то порой чувствую себя в темной запертой комноте... А пришел я к вам по делу важному - усиленно готовлю проект "Solar System II" на региональный конкурс Intel ISEF 2004, который будет проходить в Москве 31-го января. Сам то я живу в Днепропетровске (Украина). Что касается перфой версии программы, то все началось курсовой работой, а закончилось "серебряной медалью" на республиканском туре Малой Академии Наук Украины. Неплохая была програмулина на OpenGL, цель которой было достаточно точно смоделировать движение больших планет вокруг Солнца. Но это было давно.

Сейчас начинаю последний (надеюсь) раз переписывать с нуля весь проэкт. Времени потерял много... Зато обрел опыт, а что может быть ценнее! Значит так, главная задача - НАПИСАТЬ ИГРОВОЙ ДВИЖОК, а вторичная - организовать на его основе проект "Solar System II".

Кстати, последний представляет собой серъезную научную работу по теме астрономии, астрономический движок которого уже готов с прошлого года и пока еще не давал сбоев. Я решил его просто адаптировать под COM-технологию и "засунуть" в отдельную DLL.

Что касается графики, пользовательского ввода и звука - все заменил на DirectX9, что повлекло за собой создания принципиально нового движка SMEngine3D. Я уже набрался сил написать его с самого начала и до самого конца.

Хотелось бы найти себе на вашем сайте хоть какую-нибудь поддержку (такой я наивный), разумные советы и рекомендации. Со своей стороны обязуюсь выкладывать все попорядку и обсуждать с заинтересовавшимися до мелочей.

Если все пройдет удачно и движок появится на свет божий пройдя тесты и написанные на нем проекты, то собираюсь написать к движку статью (практически зафиксировав все будущие рассуждения по его написанию от А до Я) и SDK (по использованию), после чего разместить все это чудо вместе с исходниками и готовыми DLL-ками на вашем прекрасном сайте.

Обещаю сильно вас не мучать вопросами, но здесь на форуме буду выкладывать АБСОЛЮТНО ВЕСЬ текст движка поэтапно, для последующих обсуждений с заинтересовавшимися и не только. Было бы неплохо если бы вы высказывались по поводу текстов хотя бы в двух словах ("сойдет для сельской местности" либо "выкинь эту каку и напиши другую, но получше").

Вообще, сильно надеюсь на вас. Что вы о этом всем скажите?

Завтра выложу первую "порцию": Структуру движка и первый COM-объект SMApplication, который будет базовым для создания в дальнейшем SMEngine3D... Прошу прощения, о структуре завтра, а сегодня - в люльку и баиньки.

Пока! До встречи и с Рождеством Христовым!


#1
3:06, 8 янв. 2004

Sergei
И ведь ни одного скиншотика для затравки. Жду завтра - бишь уже сегодня. Пока что еще нечего обсуждать. Как сам наверно понимаешь идея написать движок не нова.

P.S. И тебя тоже с....праздником.

#2
5:16, 8 янв. 2004

Mudart

Не успел я заснуть (уж сильно быстро ты ответил). Вот набил тебе несколько скриншотов (небрежно, правда), извини:
Изображение удалено

1 и 3 - состояния родной нашей Солнечной Системы на 7-е января этого года под разными ракурсами. Это еще добрая старая SolSysI (так я ее называю). Анимацию, к сожалению выдать не могу (а вообще очень интерестно, ведь на самом деле планеты движутся не по элипсам, как учат в школе, а по куда сложнее траекториям);

2 и 6 - из той же SolSysI главное окно справки и "об авторе" соответственно;

5 и 7 - некоторые из объектов будущей SolSysII (герб еще не закончил - вчера только начал);

9 - бэта-версия физического движка SolSysII в действии и вспомогательная програмулинка для его отладки. В нем появились некоторые новые возможности. Представте себе, что вы очень увлекаетесь астрономией. Существует много людей, которые покупают за бешанные деньги аппаратуру лишь для того, чтобы посмотреть на эти точечьки на черном фоне, я встречал много таких. Лично я выбрал астрономию лишь для тестирования движка (красивая наука). А они, эти астрономы, почти все свято верят в две вещи: "Скоро наступит армагидон" и "Мы во вселенной не одни". Так вот на одном конкурсе один очень забавный член жюри рассказал мне такую вещь:

"Как-то сижу,- говорит,- перед телескопом одним прекрасным вечерком, пью чай, смотрю на звезды (как всегда, наверное). Вижу, летит одна, непохожая на других, и как-то очень быстро (намекает что близко), и странная такая." Я тогда спрашиваю: "Может спутник какой, или самолет?" А он приблизительно: "Дурак ты еще, а мы, астрономы можем отличить самолет от НЛО! Значит так,- говорит,- наша (астрономов, наверное) главная проблема - неумение кодить. Я бы уже давно написал программу, которая просчитывает далнейшую траэкторию внезапно замеченного неопознанного объекта (а я будь астрономом, уже давно повесился)! Ты крутой пацан,- мол,- а я уже старый, на пенсию ухожу. Вот на тебе "Астрономию на персональном компьютере" О. Монтенбрука и Т. Пфлегера (и тычет мне в руки какую-то странную книгу). С помощью этой волшебной книги ты научишся просчитывать траектории малых небесных тел (короче, небесного мусора, типа астероидов, комет и т. п. лищь по трем периодическим наблюдениям в телескоп (шибко нужно, думаю).- Говорит,- три раза астрономы и без тебя посмотрят в глазок по профессиональному (наверняка, вместо завтрака, обеда и ужина - через равные промежутки времени нужно ж смотреть), а твоя задача,- продолжает,- написать программу, которая бы после ввода всево три пары углав (на небесной сфере) показала бы и рассказала нам эту самую траекторию. Напишешь - век должен буду. Да и вообще, на пенсии стану твоим менеджером, ведь это очень редкая штука, требующая много усилий при создании. Наши университетские программисты в астрономии ни фига не смыслят и вникать в суть дела не хотят; наши астрономы (теоретики) самого слова программирования боятся. А ты уже полдороги прошел - девять планет ты нарисовал - ценю, но тебе улыбаются еще несколько десятков тысяч крупных астероидов, звезд, комет и НЛО (надо же, программирования боится, а я - рендеринга такого количества объектов). Ступай с миром, ковбой!"

продолжение следует...

#3
5:17, 8 янв. 2004

Я с ним разговаривал три часа, а обдумывал услышанное три дня. Ведь правду говорит: "забавно узнавать заранее, что на тебя литит со скоростью 80 000 км/час. огромная железобитонная груда диаметром 10 км. и "поцелует" тебя и все остальное северное полушарие Земли через десять лет". Ведь правду говорит: "можно пронаблюдать шесть раз: после первых трех просчитать траекторию с помощью программы, а после следующих сверится, продолжает ли объект лететь по прежнему закону или нет, тогда на него действуют какието сторонние силы (двигатель, что ли) и это уже не простая груда металла." Ведь правду говорит: "Если все объекты (Солнце, планеты, астероиды, кометы) будут двигаться по одним и тем же законам Кеплера и Гаусса, то можно будет легко доказать верность работы программы, взглянув просто на Марс любимый в телескоп и сверив с программным положением." Вообще я решил, что в этом что-то есть и за полгода реализовал всю физику.

Что касается графики, хотел бы это сделать вместе с Вами.

Прошу прощения за лирическое отступление (хоть я и молод - рассказать могу много). Продолжим ознакомление с этими самыми скриншотами (у них такая история, что вот из-за настальгии покатилась слеза):

8 - окно "о ЛИТе" (Лицей Информационных Технологий - я там уже заканчиваю учиться). Нарисован подарок ЛИТу от меня на День Лицеиста в 2000-ом году (у этого герба тоже интерестная история создания). Герб вскоре был немного переделан и отправлен в Киев на тиражирования на значки нашей МАН-овской комманды (три вариации для призеров II, III и IV этапов). По средине видеоролик со Дня Лицеиста (показан "крупным планом" мой научный руководитель);

10 - и наконец, этиаетка Solar System I. Проэкт все же небыл запатентован, т. к. после разговора с астрономом (правда звучит как гастраном?) я решил этого не делать по таким-то и таким-то причинам.

Сам виноват, что захотел скриншоты. Ну всего доброго, я уже не могу (4:14 утра а мне вставать рано). Завтра поговорим.

P.S. У меня интернет с 23:00 до 8:00. Еще раз пока!

#4
0:16, 9 янв. 2004

Всвязи с дельными советами на форуме, решил отказаться от COM-технологии. Но это так, кстати.

Обещал расскозать немного о проекте:

Хочу вам сразу заявить, что проектирование будет проходить в три этапа:
1. Создание первичного движка. Это самый ответственный но сравнительно короткий шаг. Не хочется чтоб он занял у нас больше семи дней времени. Главная цель: создание самостоятельного компонента приложения SMApplication, который собственно и выполнял бы первичную инициализацию, обработку системных сообщений Windows и пользовательского ввода, а также корректное завершение работы. Вместе с SMApplication будут созданы такие компоненты: SMList (список), SMLog (поименованный протокол, то бишь, список строк с возможностью записи/чтения соответствующего формата файла), SMConfigRecord (поименованная конфигурационная запись, то бишь, список значений), SMConfig (поименованный список конфигурационных записей с возможностью записи/чтения соответствующего формата файла). Все эти компоненты будут находиться в едином модуле smapp.dll. Что касается компонента пользовательского ввода (SMUserInput) – он будет также под контролем SMApplication, но будет иметь две особенности: для него мы создадим отдельный модуль smuinput.dll и используем событийную систему сообщений.
2. Создание вторичного движка. Самый интерестный и продолжительный этап, на который планируется затратить три недели времени. Главная цель: создание самостоятельного комплексного компонента 3D-движка SMEngine3D (производный от SMApplication), состоящего из таких компонентов: SMGraphics (графический движок - часть SMEngine3D, реализованная с ним в одном модуле smeng3d.dll и управляющая подготовкой графических данных (отбраковка невидимых граней и т. п.) для дальнейшего рендеринга см. далее), SMRender3D (самостоятельный компонент урправляющий отрисовкой и выводом изображения на экран и реализованный в отдельном модуле smrender3d.dll), SMScene3D (самостоятельный компонент управляющий виртуальной 3D-сценой и предоставляющий набор компонентов для создания самой сцены (источники света, камеры, модели, спрайты и т. п.) – отдельный модуль smscene3d.dll), SMInterface2D (самостоятельный компонент управляющий виртуальным пользавательским интерфейсом и предоставляющий набор компонентов для создания самого интерфейса (текст, картинки, поля ввода, кнопки и т. п.) – отдельный модуль smui2d.dll), SMResources (самостоятельный компонент управляющий ресурсами и предоставляющий набор компонентов ресурсов (шрифтов, строк, текстур, mesh-ей и т. п.) – отдельный модуль smres.dll). Что касается звуковых эффектов и музыкального сопровождения (SMSound3D и SMMusic3D соответственно), то они реализованы в отдельных модулях (smsound3d.dll и smmusic3d.dll соответственно) и используют событийную систему сообщений.
3. Создание приложения на основе построенного движка. Тут я вас на недельку покину. У нас с вами немного разные интересы: вам (я понял по названию сайта) интересно игры писать (может успеете состряпать что-нибуди за недельку ) – мне же как раз в это время нужно будет закончить научную работу “Solar System II” и защитить ее (собираюсь прикрепить к нашему произведению искусства физический движок, оформить как следует и написать краткую докуметацию). Короче, у вас будет достаточно времени (целых сем дней), чтобы оценить легкость использования новорожденного движка и попробовать его протестировать. Можете даже попробовать ощутить на себе COM-технологию и написать, например, новую версию SMRender (мало ли, может кому больше нравится OpenGL). Потом вернусь и попробуем вместе написать игрушку (здесь я новичек – хочу научиться) и помогу с созданием плагиновой и скриптовой системы, с физическим движком, инверсной кинематикой, написанием всяких редакторов (если потребуются таковые) и прочей дрибидени.
Подробнсти буду описывать далее вместе с кодом. А сегодня спрашивайте, если что не понятно.
Спасибо за внимание!

ПроектыФорумОцените

Тема в архиве.