Не так давно, на заре этого тысячелетия, холодным ноябрьским днем 2004го я сел писать эмулятор сервера для некой онлайн игры. Писалось мне весьма хорошо, на радующем глаз C# и .Net Framework версии 1.1. Особых целей перед собой я не ставил, а опыт имел сравнительно небольшой. По какой-то причине сообщество оценило эту поделку (может, потому что она появилась раньше официального старта основной игры?) и через несколько месяцев я столкнулся с взрывным ростом онлайна, а заодно и серьезными проблемами производительности. Проект прожил 6+ лет, достиг заметных высот (2500 онлайна в пике, порядка 20000 MAU), а затем и почил в бозе. И вот спустя полтора десятилетия я решил сделать собственную ММО игру на тех же “проверенных временем” наработках и столкнулся с аналогичными же проблемами, не смотря на то, что они были уже единожды мною решены.
Гордый Хохол @Nomad1
Погромист игоръ
Как я эволюцию админов в программистов измерял
13 min
27K
Кому интересны грязные детали, необъективные тесты и субъективные оценки — прошу под кат.
+15
Metaballs без шейдеров + физика жидкостей
7 min
20K
+17
История одного клона
6 min
24K
Три пути у человека, чтобы разумно поступать:
первый, самый благородный, — размышление;
второй, самый легкий, — подражание;
третий, самый горький, — опыт.
Конфуций
Однажды прохладным весенним вечером 2013 года захотелось мне сделать собственный аналог приятнейшей старой игры Scorched Earth, но с разными вытребеньками. Под хорошее настроение и заводную музыку я бросился кодить на первом попавшемся под руки IDE и фреймворке. По злой иронии это оказался WFP для Windows 8 Store. А вот для полета снаряда и реакции окружения я взял Farseer Engine — C# порт Box2D.
Сам уже не помню, как от идеи разрушаемой земли и баллистических ракет я перешел к катапультам, строениям из блоков и монолитному ландшафту. Так и началась двулетняя история моего клона Angry Birds.
+38
OpenGL ES 1.1 в Windows 8 и Windows Phone 8.1
7 min
16K
Я поддерживал несколько проектов, сделанных по этому принципу и понемногу в голове выстроился коварный план: сделать кросс-платформенную 2D игру на мобильных с OpenGL ES и на C#, а на десктопах с обычным OpenGL. Цели я добился не с первого раза и было с этим много проблем, но в результате очередной проект у меня работает без изменений бизнес-логики на iOS, Android, BlackBerry, Windows XP/7, Mac OS X, Linux, ReactOS, Windows 8, Windows Phone 8.1. Материала набралось на много статей, но в этот раз я расскажу именно о поддержке Windows Runtime.
+26
Обмануть Мигеля?
5 min
39K
Как-то раз Мигель…
(Хотя нет, история не совсем о нем, попробую начать иначе)
Однажды в мире Open Source…
(Тоже мимо, OSS в истории затронуто лишь частично)
Когда жажду наживы называют здравым смыслом, начинается обман.
(Почти афоризм)
Предыстория
Стукнуло мне в голову написать программу под Мак на C#. Я поблагодарил Мигеля де Икасу за отличный Open Source проект Mono, воздал хвалу за его же библиотеку MonoMac, чуть ругнулся на сыроватый MonoDevelop и принялся за работу. Через некое время был оплачен аккаунт в AppStore, программа была в шаге от завершения, когда начался большой проект по основной работе и ее пришлось отложить. И вот через год пришло сообщение, что пустующий аккаунт в AppStore будет закрыт через 30 дней — это был знак, что надо что-то делать. MonoDevelop, обновившийся сам до Xamarin Studio, предложил сразу проект MonoMac преобразовать в Xamarin.Mac и повел меня на сайт, где было предложено купить этот самый Xamarin.Mac всего за $999, иначе деплоймент в AppStore будет невозможен.
+88
Arcanum и Fallout 2 с сенсорным экраном и стилусом в Windows 8
7 min
60K
Через пол-часа создания персонажа (а ведь это дело очень важное и ответственное!) левая рука с трудом держала устройство, а запястье правой подозрительно начало тянуть, намекая о туннельном синдроме и прочих радостях неудобного хвата. Вспомнив
Патчей не нашлось. Единственный похожий драйвер был платным и без пробного режима. Вот в этот момент в голову и пришла идиотская (это я теперь понимаю!) мысль — «там ведь наверняка приходит какой-то WM_TOUCH и неправильно преобразуется в WM_MOUSEMOVE»… Забегая вперед, Арканум теперь у меня полностью управляется с тачскрина, правда, выходные закончились и больше хочется спать, чем играть.
+79
Тернистый путь в Windows Store
7 min
48K
Как раз в эти дни, 4го декабря, мне попалась на глаза статья про конкурс приложений для W8 от Microsoft. Выкладывать экспериментальные программы было как-то не серьезно (хотя маркет такими поделками буквально переполнен), потому я решился портировать достаточно масштабный проект с MonoTouch и iOS. Запаситесь попкорном, потому как кроме программистских деталей тут будет и комедия, и драма, и жизненный финал.
+82
AppSurfer в действии — андроид программы в браузере
2 min
17K
О проекте AppSurfer на Хабре упоминали, когда он был в бета-стадии, а теперь хочу рассказать несколько технических деталей об актуальной версии. Вкратце, проект дает возможность «потрогать» Android программу через браузер. В предыдущей статье его назвали «YouTube для Android-приложений» и это на 100% верное определение.
Регистрация открытая, разработчики сами выкладывают свои .apk файлы. Приложение обязательно должно быть в Google Play, оттуда берутся мета-данные, иконка, скриншоты и описание. Программы выполняются в виртуальной среде и их изображение передается на Flash-плеер в браузере.
+34
Используем JPEG с прозрачностью
3 min
38K
Оба метода относительно сложны для использования, да и рассчитаны на веб, потому я остановился на самом простом варианте: хранить отдельно lossy JPEG для RGB и lossless маску в PNG, а совмещать их на этапе получения UIImage в программе. Сразу хочу сказать, что пишу на MonoTouch, потому код привожу на C#, хотя в ObjC это делается почти точно так же, с учетом синтаксиса.
+38
Видео последовательность в Drawable
5 min
5KПосле поста о подходе Apple к кодированию видео в JPEG, решил рассказать о своем подобном «велосипеде» под Android.
В своем мобильном проекте решили мы сделать превьюшки оружия не статической картинкой, а видео. Подразумевалось, что художники нарисуют красивые анимации, может даже в 3д, но что-то не сложилось и нам выдали простейшие зацикленные 1-1.5 секундные ролики в разрешении 256х256. В iOS версию они встроились замечательно, а вот в Android пришлось повоевать с MediaPlayer и SurfaceView, но все-равно получились некоторые «корявости» — содержимое SurfaceView не перемещалось вслед за родительским View, была заметная пауза при воспроизведении, и пр.
Разумным решением было бы разбить анимации на кадры и оформить в xml для AnimationDrawable, но для 15 видов оружия это значило бы мусорку из 5000+ кадров по 10-15 кб каждый. Потому была сделана своя реализация AnimationDrawable, работающая с sprite sheet и относительно быстрый метод конверсии видео в такой формат.
В своем мобильном проекте решили мы сделать превьюшки оружия не статической картинкой, а видео. Подразумевалось, что художники нарисуют красивые анимации, может даже в 3д, но что-то не сложилось и нам выдали простейшие зацикленные 1-1.5 секундные ролики в разрешении 256х256. В iOS версию они встроились замечательно, а вот в Android пришлось повоевать с MediaPlayer и SurfaceView, но все-равно получились некоторые «корявости» — содержимое SurfaceView не перемещалось вслед за родительским View, была заметная пауза при воспроизведении, и пр.
Разумным решением было бы разбить анимации на кадры и оформить в xml для AnimationDrawable, но для 15 видов оружия это значило бы мусорку из 5000+ кадров по 10-15 кб каждый. Потому была сделана своя реализация AnimationDrawable, работающая с sprite sheet и относительно быстрый метод конверсии видео в такой формат.
+18
Запись видео с экрана Mac OS X средствами open-source
6 min
31K
В моем случае возникла необходимость записать работу игры на симуляторе iPhone и Android. Программист внутри меня сразу предложил написать кучу кода, как под iOS/Android, так и под сам Мак, дампить кадры через OpenGL и пр. Остановив эти позывы, я таки решил найти готовые решения, а затем и оформить тут статью, как памятку.
+2
История о велосипеде
5 min
3.8K
Эта история началась чуть более года назад с появлением у моей супруги современного смартфона. Она попросила найти пасьянс «Косынку», такой же как был когда-то на настольной Windows. Просмотрев десяток программ, я был неприятно удивлен — почти везде было неудобное управление, спорные картинки карт, море дополнительных наворотов вроде 250 пасьянсов в одном, установки фотографии на рубашку и блекджека с блудницами. В результате, выбрали один из более-менее годных вариантов и на какое-то время об этом забыли.
Пролетел год и я начал писать программы для мобильных. При этом ребром стал вопрос кросс-платформенности, отладки in-app покупок, подготовки контента под разные платформы. Была мысль сделать для пробы пера «Тетрис» или очередной калькулятор, но все же в качестве «велосипеда» я выбрал «Косынку». Идейным стрежнем проекта стало максимально точное повторение старого, доброго пасьянса из набора игр Windows.
+27
Оптимизация ресурсов iOS приложений
5 min
6.1KПри сборке приложений под iOS для оптимизации ресурсов используется скрипт iphoneos-optimize из набора XCode. Работает он отлично, но если копнуть поглубже, то становится ясно, что некоторые файлы не пережимаются, а другие хоть и немного уменьшаются, но все-равно далеки от идеала. Можно сказать, что задача скрипта сделать файлы более совместимыми с iPhone, чтобы они быстрее читались или распаковывались, но скорее всего это имело смысл лишь на старых iPhone 1 и иже с ними, а уже на процессорах 1ГГц с ARM 7 это откровенно не актуально.
С помощью простых оптимизаций и парочки программ из набора MacPorts можно добиться существенного уменьшения PNG и JPG картинок в конечной программе, а при желании и других видов данных.
С помощью простых оптимизаций и парочки программ из набора MacPorts можно добиться существенного уменьшения PNG и JPG картинок в конечной программе, а при желании и других видов данных.
+14
Information
- Rating
- Does not participate
- Location
- Украина
- Date of birth
- Registered
- Activity