Update: Теперь игра есть и в Google Play.
Много лет назад я написал небольшую игрушку — WordLines. Старожилы возможно помнят.
В связи с тем, что с недавнего времени Delphi поддерживает Android, а также в связи с подвернувшимся под руку конкурсом, стало интересно сделать то же самое для планшета. Хорошо получилось или не очень — судите сами. Главное помнить, что это не коммерческий продукт, а результат эксперимента.
На удивление все прошло довольно просто. Это непередаваемое ощущение — компилировать и запускать все то же самое, но на новом устройстве. Без шероховатостей конечно не обошлось и именно с процессом работы над WordLines связаны некоторые мои недавние посты, но в целом я остался доволен. Основные сложности были связаны не с Delphi, а с отсутствием у меня опыта разработки мобильных приложений — из-за разных форм-факторов заставить одну и ту же форму выглядеть одинаково на разных устройствах не так уж и просто (возможно, это требует привычки).
Картинка мелкая, да, но вот такое уж у меня на планшете разрешение, извините :)
Также поигрался с рекламируемым TRESTClient. О нем сказать особенно нечего. Он работает, все как обещали.
С помощью REST организованно взаимодействие с небольшим веб-сервисом. Этот функционал позволяет игроку отправить свои результаты на сервер и получить от него информацию о рекордном результате среди всех игроков. Так же есть онлайн-таблица рекордов. Уделять внимание дизайну мне было некогда, так что не пугайтесь :)
Бэкенд сделан с помощью эмбаркадеровского HTML5 Builder (люблю экстрим). Впечатления неоднозначные. Возможно, когда-нибудь о них расскажу.
Плюс ко всему бесплатно я получил версию WordLines для Mac и iOS. Это круто.
То есть обещанная 100% переносимость кода между платформами реально работает, нас не обманули. У меня во всем проекте буквально полтора IFDEF’а. Убедитесь сами.
Напоследок в двух словах расскажу о самой игре, если вдруг не все очевидно.
Все помнят Color Lines — на поле выпадают разноцветные шары, их можно перемещать по полю и составлять линии одного цвета, которые исчезают.
В WordLines на поле выпадают буквы и перемещая эти буквы нужно составлять слова, которые затем исчезают. Но исчезают они не автоматически, а после нажатия кнопки «Убрать слова» (в этой версии — зеленая стрелка под списком найденных слов). За убранные с поля слова начисляются очки. Если убирать слова автоматически, то играть не так интересно, как мне кажется — буквы пропадают внезапно и становится труднее составлять длинные слова.
Есть много идей, как игру можно улучшить, но не забывайте, что в данный момент это в первую очередь эксперимент.
1. IL
25 Дек 2013 8:34 дп
В таблице рекордов не надо «светить» полный email, пожалуйста!
Игра выглядит очень круто, кстати :)
По-моему, это хит!
2. Павел Мороз
25 Дек 2013 9:55 дп
Блин, действительно классная, игра. За исходники огромное спасибо, сподвигли на «попробовать» ХЕ5. Буду пытаться делать для Андроида, т.к. есть что в планах.
3. Всеволод Леонов
25 Дек 2013 12:10 пп
Вчера набрал 119. В базу попало?
4. Роман Янковский
25 Дек 2013 12:49 пп
IL, да, ты прав. Подправлю этот момент. Еще выявилась проблема с русскими буквами в таблице. Надо понять как эти DCD4CBDBCBD7DB перевести в человекочитаемый формат. За отзыв спасибо, приятно очень :)
Павел Мороз, спасибо!
Всеволод Леонов, чтобы что-то попало в базу, нужно нажать кнопку «Синхронизация». Автоматически оно не работает. Возможно, это упущение, но тем не менее вот так вот.
5. IL
26 Дек 2013 9:00 дп
Хм, а почему для iOS получилось, что площадь экрана целиком закрыта плашками букв, а для остальных ОС слева панелька?
Пока только на один баг наткнулся: выход из игры кнопкой Назад не работает.
6. Роман Янковский
26 Дек 2013 9:27 дп
IL, у айпада сильно другие пропорции экрана. Так как конкурс все-таки про Android, я не стал пока заморачиваться — требует времени. Для айпада нужна выезжающая панель, ибо в нормальном виде она не помещается на экране. Но в целом проблем быть не должно. То есть это баг.
Про кнопку «Назад» — это не бага, а фича. Кнопка «Назад» у меня используется для отмены последнего хода (когда это возможно). Или это плохая идея?
7. Kazantsev Alexey
27 Дек 2013 10:19 дп
На моем устройстве — белый экран и тишина. Есть подозрение, что это из-за GPU Vivante (http://qc.embarcadero.com/wc/qcmain.aspx?d=119607). Какой версией собирал apk?
8. Роман Янковский
27 Дек 2013 10:23 пп
Kazantsev Alexey,
Delphi XE5 Update 1
Android SDK 22.0.1
Если я правильно понял твой вопрос.
9. Денис Васильев
28 Дек 2013 1:11 дп
Круто, работает, скомпилил с исходников, только пришлось иконки в настройках правильно прописать, а то они смотрели на диск C.
как вижу мой рекорд «Denis nexus 7 2013» попал в общею таблицу. (http://roman.yankovsky.me/wordlines/)
за исходники спасибо, интересно, так заботливо все прописано в «public type», «private const», встречаются «[Weak]», «reintroduce», «inline», «», «for .. in .. do», анонимные методы , процедурные ссылки, … все в разных юнитах, круто :)
жаль что нет ни единого комментария,
..интересно было бы услышать комментарии по структуре классов, почему так, как к этому пришел,
.. интересно было бы посмотреть на серверную часть то что написано на HTML5 Builder, и услышать комментарии как оно впечатления
10. Kazantsev Alexey
28 Дек 2013 2:03 дп
@Роман Янковский
Ага, спасибо. Именно версия дельфей и интересовала. Выходит, надежда еще есть :)
11. IL
29 Дек 2013 5:44 пп
С кнопкой Назад сложно. Если приложение ее задействует, то выход иногда делают двукратным нажатием подряд с предупреждением после первого нажатия. Например, в 4pda клиенте так сделано. В играх чаще запрос возникает: выходить? да/нет.
12. IL
29 Дек 2013 10:39 пп
Игра понравилась :) Если будете допиливать игру, пожалуйста, посмотрите эти вопросы/пожелания:
1) от 4-х угольников для букв к 6-граннику сложно будет перейти?
2) режим игры с прозрачными для букв границами, так чтобы букву можно было переставить на любое незанятое место, имеет смысл?
3) показывать буквы, которые появятся на следующем ходу?
4) СУЩЕСТВЕННО расширить словарь :) Я так понимаю, в этот словарь не вошли имена собственные.
5) может быть не стоит брать 2-х буквенные слова?
6) если построено слово большей длины при уже имеющемся коротком удлинять его и заменять в таблице составленных слов на более длинное (может быть так сейчас и происходит)
7) отключить гашение экрана, для этого, наверное, потребуется permission на Андроиде.
13. Роман Янковский
31 Дек 2013 3:01 пп
Денис Васильев,
Спасибо! Комментариев я очень мало пишу, к сожалению, так и не выработал в себе такую привычку. Какое-то описание внутренностей WordLines я могу опубликовать, если это кому-то интересно.
Про бэкенд и HTML5 Builder я напишу обязательно :)
IL,
Шестигранники мне даже в голову не приходили, интересная идея, я подумаю. Не должно быть слишком сложно. Но вот прозрачные границы, мне кажется, лишат игру смысла. Точнее это получится уже совсем другая игра. Словарь побольше я кажется уже нашел, нужно будет не забыть после НГ пересобрать игру с новым словарем :) В остальном в основном согласен, нужно пробовать и смотреть что будет :) Еще раз спасибо!
—
С наступающим!
14. Николай Зверев
31 Дек 2013 3:16 пп
Поздравляю с победой :)
И с наступающим!
15. IL
2 Янв 2014 6:14 пп
Так-так, а где объявлено о результатах конкурса? :)
16. Роман Янковский
2 Янв 2014 10:52 пп
Николай, спасибо! И тебя поздравляю!
IL, http://delphimobile.ru/ :)
17. Денис Васильев
2 Янв 2014 10:54 пп
http://www.delphimobile.ru/ :) там же где и объявление конкунса
18. IL
8 Янв 2014 11:06 дп
Следующий вопрос (: Где скачать готовые работы дабы их опробовать? Разумеется, кроме работ Романа и Николая Зверева.
19. Vsevolod Leonov » Подключение Fly IQ441
4 Фев 2014 6:53 пп
[…] также (не собрал, но) запустил эталонный проект, реализованный в Delphi (я его таковым считаю). Тоже всё […]
20. Всеволод Леонов
5 Фев 2014 10:30 пп
@IL
На проектах стоит «копирайт». Публиковать исходники мы (жюри и организаторы) не можем без согласия авторов.
Я постепенно буду на блоге выкладывать обзоры работ, там в комментах можно попросить автора поделиться.
Есть один очень красивый по дизайну и качеству проект, который уникален. Человек реально вложился и (будет здорово) денег будет зарабатывать.
Некоторые авторы извинялись, что писали быстро, потом не чистили/рефакторили, поэтому не давали разрешение на публикацию исходников, т.к. не хотят становиться объектами троллинга. Именно поэтому даже обзоры работ делаются с разрешения авторов. Многие из них — вполне себе состоявшиеся разработчики и не хотят, чтобы написали «фу… поделка». Но для меня они все — шедевры. Как минимум заслуживают уважения за смелость. Заявок было 300, а поданных готовых проектов только 19.