LINUX.ORG.RU

Научите, как делаются кросс-платфоременные приложения


0

0

Знакомый пишет авиамодельный симулятор

http://www.youtube.com/watch?v=E4Usj3fXv7Q&feature=player_embedded

http://forum.rcdesign.ru/blogs/8406/

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

Кто-нибудь может подсказать ссылок для самообразования? Хочется разобраться, как вообще разрабатывают кроссплатформенные приложения. Что там надо учитывать, есть ли специфичные инструменты, и т.п.

В общем, для разработчика, который очень не дурак, но конкретным вопросом совершенно не владеет. Хочется простого чуда - чтобы «по нажатию кнопки» можно было получить из идних и тех же исходников дистрибутивы для разных платформ.

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

Если для ответа надо знать какие-то подробности по внутренностям, скажите.

★★★★★

оо, у меня такой же вертолётик дома валяется :)

anonymous
()

я как понимаю надо завязываться на кросплатформенные решенеия. Самое то, как часто пишут - это mono! Mono в каждый дом, ну а сам я предпочитаю Qt

xscrew ★★
()

на чем он его пишет? обычно кросс-платформенные решения делаются путем правильного выбора абстракций, за которыми прячутся детали конкретных реализаций. Посмотрите на rationale для boost.asio, boost.filesystem и прочих библиотек...

ott ★★★★★
()
Ответ на: комментарий от ott

ПлюсЫ. OpenGL, OpenAL, Open Physics. Модельки пока рисуются в Rino. Для сцен и механики по-моему временно с «работы» что-то взято. Он по долгу службы автомобильными симуляторами занимается.

В качестве IDE под вендой - Visual C. Если делать только под нее - это вполне логично. Менюшки и диалоги пока на чем-то вендовом сделаны.

Обоснованные советы «выкинуть все нах и делать в блендере» тоже рассматриваются. Специфика задачи такова:

- Это НЕ игрушка. Сложных сцен, лабиринтов, и калашов с запасом патронов там нет. - Упор делается на точную симуляцию физики одного объекта (модели) и погодныху словий (ветер,термики) - Также важно грамотно рисовать механику модели. Например, у вертолетов при меневрах изгибается и отклоняется плоскость ротора. И хоть простой человек этого не видит, для моделиста без таких нюансов управлять моделью практически нереально.

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

>ПлюсЫ. OpenGL, OpenAL, Open Physics.

Qt же! Там всё это делается достаточно просто, и даже плугин для вижуал студии есть. Если не вызывать напрямую Win32API, то всё будет чрезвычайно кроссплатформено.

ArtSh ★★★
()
Ответ на: комментарий от Vit

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

ПлюсЫ. OpenGL, OpenAL, Open Physics

С OpenGL и OpenAL проблем нет. Не знаю, правда, что такое open physics.

Менюшки и диалоги пока на чем-то вендовом сделаны

Это придется заменять. Скорее всего подойдет Qt.

Возможно в коде есть еще завязки на WinAPI - почти всегда их можно перевести на то же Qt. Собственно, когда нигде в проекте не будет использоваться windows.h можно считать программу кроссплатформенной. Кроме того понадобится система сборки, лучше всего взять CMake (он в том числе умеет геренить и VC'шные проекты).

После этого код можно выложить и попросить линуксоидов потестировать - к этому моменту если какие-то проблемы и останутся, пофиксить их будет делом техники.

slovazap ★★★★★
()
Ответ на: комментарий от Vit

Я в таких вещах разбираюсь плохо, но на ЛОРе мелькали ссылке на советы, как писать игры, которые будет легко переносить. Думаю, они частично применимы и здесь.

Помимо вышеперечисленного там рекомендовали ввод с клавиатуры и мыши осуществлять через SDL.

question4 ★★★★★
()

>Научите, как делаются кросс-платфоременные приложения

Берёшь значит яву...

golodranez ★★★★
()

> Желательно, чтобы в качестве рабочей среды на первых порах могла остаться венда. Менять все сразу - слишком радикально.

Qt, Qt и еще раз Qt. Среда Qt Creator из Qt SDK - http://qt.nokia.com/downloads и выбрать LGPL.

Так и на винде останется, и в своей студии, и под Linux соберется легко, даже изучать ОС Linux не потребуется...

I-Love-Microsoft ★★★★★
()

Тут уже посоветовали Qt, всячески поддержу. Упомянули об отказе от windows.h - К.О. доволен. В ту-же топку бросаются COM, MFC и VCL.

Скажу пару слов про код. Никогда не надо делать предположения о sizeof(). Нет способа угадать размер int (кроме сайзоф). Нет, не 4. Кроме того, sizeof(int)!=sizeof(void*). Это простые правила, им легко следовать на практике. Если нужен тип фиксированного размера (для чтения из файла, например) - надо брать всякие uint8_t и т.п. Определены в хедере stdint.h (в студии его можно заменить на boost/cstdint.hpp).

Если нужна многопоточность - лучше осилить boost.threads, чем через ифдефы юзать платформозависимые решения.

Хочется простого чуда

qt-creator, однозначно. С ним совершенно нормальна ситуация, когда разработка ведётся на linux x86_64, а у заказчика windows 32 бита. Проблем с этим - 0, буквально.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

> qt-creator, однозначно. С ним совершенно нормальна ситуация, когда разработка ведётся на linux x86_64, а у заказчика windows 32 бита. Проблем с этим - 0, буквально.

Я думаю на среду вообще завязывать не надо, проще использовать нормальные системы сборки, например cmake. Тогда от среды/компилятора/платформы зависеть не будешь.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.