Процесс и его описание интересно, но не стрельба ли это из пушки по воробьям? Более чем достаточно браузерных ресурсов, без работы с графическими библиотеками.
К слову, не совсем ясно, почему компилируемый в байткод язык + фреймворк + специально предназначенная для графики библиотека, поддерживаемая на аппаратном уровне, — это пушка; а вот интерпретируемый язык, выполняемый в окружении браузера + манипуляции текстовыми компонентами при помощи языка оформления текстовых страниц — это не пушка. Про воробья-то не спорю.
Потому что мощности много, она не используется полностью, но это ладно; главное — для каждой платформы вынуждены компилировать свою программу. Браузерная игра будет один раз на все платформы написана, мощности заведомо хватит, компилировать не нужно (только думать, как без сервера запустить с сохранениями данных, если это надо).
Было дело, да; но как-то скучно в 2011 году использовать те же самые инструменты, что в 1996. Опять же, мама текстовый режим не оценит.
Книжка, кстати, хорошая вышла в 1983 году, «Программирование игр и головоломок»; в ней не раз примечания делались, что, мол, эта игра особенно хорошо будет смотреться на цветном мониторе, а если вы к тому же мажор и у вас графический режим есть…
Это надстроечка из OpenTK, не чистый OpenGL; но почему называется GameWindow, действительно непонятно, OpenTK не позиционируется как только/преимущественно для игр.
Метод OnKeyDown базового класса GameWindow почему-то никогда не вызывается, пришлось цепляться к Keyboard.KeyDown; а так вроде всё нормально, но здесь, как видите, пока мало что задействовано.
C# + OpenGL?
Странное сочетание. Для C# (тем более для такой простой игры) лучше брать XNA, тогда получается кросс-платформа Windows-XboX-WinPhone.
А для OpenGL лучше взять что-нибудь более кроссплатформенное, чем C# — С++/Java/Python.
Так и что же? Браузеры, допустим, тоже все от разных производителей, что теперь, HTML не использовать?
C#, к слову, меня первый из компилируемых языков действительно впечатлил кроссплатформенностью. Сделал проект в Visual C# Express под Windows, открыл в MonoDevelop под Arch Linux — запустился сразу, вообще без необходимости что бы то ни было настраивать. Более того, исполняемый файл, который получился под Linux’ом, в Windows запустился за милую душу. Вот это я понимаю: кроссплатформенность.
Мне встречались игры, написанные на Python, которые распространялись сразу с интерпретатором и на 100% работоспособные после обычного копирования. Может ли таким же успехом похвастаться Mono?
Кстати, в попытках найти игру (см. вступление к статье) встречал как раз аналогичную игру, сделанную на Python. Ох и пришлось помучиться, чтобы её смогли люди с рабочего стола запускать! От чёрного окошка командной строки, висящего в фоне, так и не удалось избавиться.
Кстати, о кросс-платформенности C# и Java. Если вы захотите портировать свою игру на Android, который основан на Linux, какой из этих языков предпочтительнее?
Приложение, написанное на C#, можно запустить под Android (Mono for Android), iOS (MonoTouch) и под WP7 (нативно).
Приложение на Java запустится только под Android.
Java, к слову, меня первый из компилируемых языков действительно впечатлил кроссплатформенностью. Сделал GUI проект в NetBeans (бесплатный), открыл в Windows, Ubuntu, Mac — одинаковый результат. Более того, исполняемый файл, который получился запускался везде за милую душу без единых изменений )
Когда пишут кросс-платформа про ПО, тогда имеют в виду вин и никсы, но когда говорят про кросс-платформу (или мультиплатформу) для игр, обычно имеют в виду PC и консоли.
Есть проект MonoGame (делают реализацию XNA поверх OpenGL, говорят, что работает на iOS, андройде, макоси и линуксе). Ещё есть билды моно на PS3 (их, правда, сложно достать, они под свободными лицензиями не распространяются). При желании можете подружить первое со вторым, всё в ваших руках.
Проект не требует более высокую версию, а значит, незачем её выбирать. (Если бы проект не компилировался, то я выбрал бы другую версию.) Как следствие, люди, у которых стоит чуточку устаревший фреймворк 2.0, смогут запустить приложение без необходимости обновлять фреймворк.
Просто что касемо игр, даже небольших инди проектов, то +-20Mb к проекту не остановят игрока от игры. А более высокая версия вполне может дать больше перформанса.
Хотя я не в курсе того, что находиться в тех необъятных объемах вышедших к 2.0 Service Update'ов.
Impressive Solids: делаем игру на C# под OpenGL, часть I