Деревянные игрушки или Как я писал мобильные игры с телефона

    Когда-то, когда деревья были большими, а мобильники — ещё совсем дикими, и не существовало единых стандартов и Винды для телефонов, я был счастливым обладателем Siemens C72 — одного из немногих телефонов, позволяющих полноценно работать с файловой системой (на других телефонах в то время доступ к ФС был либо сильно ограничен, либо полностью отсутствовал).

    Так уж вышло, что ПК к тому времени у меня ещё не было, а окунуться в увлекательный мир программирования уже хотелось. Так я поставил и родилась идея — начать кодить на мобильнике. Жесть, скажете вы? Оренбургские программисты настолько суровы, что мы пишут мобильные приложения на самих мобильных. Да, именно так, и я решил написать свою первую статью на Хабр, основываясь на своём опыте, т.к. в рунете подобные темы ещё не поднимались.

    Итак, с чего все начиналось?

    Конечно, с популярной мобильной платформы — java. (До джавы была еще одна мобильная платформа — Mophun, но так как она была рассчитана в основном на игры — с этой задачей она полностью справлялась — игры на Mophun отличались зрелищной 3D-графикой, быстродействием даже на самых слабеньких девайсах; зачастую такие игры поддерживали сетевую игру через Bluetooth/Internet, — но что касается приложений — платформа Mophun не предоставляла даже элементарного доступа к ФС, какое тут может быть программирование?

    Значит — java. Буду кодить на мобильной клавиатуре, с экраном 130x130 и оперативой 1,5 — 2 мб. Запускаю миниоперу, провожу не один час в поисках какого либо способа программирования, и вот наконец нахожу — mobile basic.

    imageimage

    Приложение не позволяло компилировать код программы в исполняемый файл, оно было по сути интерпретатором — пиши, запускай, сохраняй текст программы, но не более. Выбора не было — пришлось осваивать язык. Так как бейсик изначально очень легким языком, то недели две спустя я навострился писать уже достаточно неплохие приложения.

    Но мне хотелось прогресса — работы с графикой, создания простейших игр. К счастью, к тому времени на нашем форуме-таки нашли способ создавать отдельные джава приложения с помощью мобильного бейсика. Он заключался в следующем: написать непосредственно код программы, сохранить его в текстовой файл, далее воспользоваться областью памяти, где у мобильников хранятся файлы, создаваемые приложениями (например сейвы в играх хранятся именно там). Необходимо было вытащить этот файл с помощью специальной программки, запаковать в zip с файлом исходника, со всеми ресурсами и непосредственно с самим мобильным бейсиком. Таким образом я наконец получал готовое java-приложение.

    И я начал писать игру. Игрушка была простая — управляешь рыбкой, поедаешь более мелких сотоварищей, и убегаешь от более крупных – выживаешь, короче :) Нужна была графика, но с этим проблем не было — к тому времени существовал графический редактор PaintCAD, который по функционалу оставляет виндовый пейнт (не тот, который написан на .NET, конечно :-) далеко позади.

    image

    Набросал пару несложных моделек, запаковал их в архив с бейсиком (чтобы ресурсы были доступны при написании игры) и принялся уже собственно за написание кода. Через пару дней игра была готова. Работала она конечно не без багов, но со временем все поправил.

    imageimageimage

    Вот участок кода этой игры:

    520 GELLOAD "f4","f4.bmp":SPRITEGEL "f4","f4"
    521 GELLOAD "f5","f5.bmp":SPRITEGEL "f5","f5"
    522 X5%=-50:Y5%=110
    530 X%=65:Y%=65
    531 GELLOAD "f7","f7.bmp":SPRITEGEL "f7","f7"
    532 X7%=-20:Y7%=0
    537 XF1%=XF1%+1:YF1%=60+MOD(RND(0),60):SPRITEMOVE "f1",XF1%,YF1%
    538 SETCOLOR 0,250,0
    539 XF1%=XF1%+1:YF1%=60+MOD(RND(0),60):SPRITEMOVE "f1",XF1%,YF1%
    540 IF LEFT(0) THEN X%=X%-1
    541 XF%=XF%-1:SPRITEMOVE "f",XF%,YF%
    542 IF XF%<=0 THEN XF%=580+MOD(RND(0),50):YF%=60+MOD(RND(0),60):SPRITEMOVE "f",XF%,YF%
    545 IF UP(0) THEN Y%=Y%-1
    546 IF SPRITEHIT("f4","f") THEN CLS:O%=O%+1:GOTO 1000
    547 DRAWSTRING CHR$(1086)+CHR$(1095)+CHR$(1082)+CHR$(1086)+CHR$(1074)+":"+STR$(O%),30,2
    548 SETCOLOR 0,250,0
    549 XF1%=XF1%+2:SPRITEMOVE "f1",XF1%,YF1%
    550 IF RIGHT(0) THEN X%=X%+1
    552 IF XF1%>=130 THEN XF1%=-300+MOD(RND(0),50):YF1%=60+MOD(RND(0),60)
    553 SPRITEMOVE "f1",XF1%,YF1%
    554 IF SPRITEHIT("f4","f1") THEN GOTO 2000
    555 IF DOWN(0) THEN Y%=Y%+1


    К слову, именно по причине открытости сименсовских устройств, программированием на мобильном бейсике в то время занимались только сименсоводы. Позднее для этого появились многочисленные приложения — такие как mobile pascal, jasmin, а затем и полноценные джава-компиляторы.

    Но к тому времени у меня уже было устройство на windows mobile, пришедшее на смену старику-сименсу (у того уже кнопки отваливались от кодинга :-).

    Тут выбор, конечно, гораздо круче. Порт GCC (компилятор C++), Pocket C# (со своей IDE), Basic4PPC, Python, Perl, Tcl/tk, MortScript, Turbo Pascal (на Эмуляторе DOS'а) — это лишь некоторые из них.

    Basic4PPC:

    imageimage

    CEdit:

    image

    Turbo Pascal:

    image

    Вот процесс создания приложений на Pocket GCC: пишем код, например, на CEdit (редактор с подсветкой синтаксиса), сохраняем готовый *.cpp файл, далее кликаем на батник (в нём прописаны пути к компилятору, и к файлу *.cpp), и спустя пару минут забираем свежеиспеченный .exe файл программы.
    Для этого процесса вовсе не требуется мощное устройство: хватит процессора с частотой 200 мгц и свободной оперативки 15-20 мб — а такими характеристиками обладают даже самые бюджетные устройства на WM.

    Подумайте, ведь это так хорошо иметь в кармане полноценный программатор, и на досуге, вдали от ПК всегда можно написать небольшую программку и насладится ее работой прямо на КПК :)

    ***
    PS Мопед не мой, я просто разместил маляву предоставил трибуну и выступил в качестве редактора. Автор — Artemzr, прошу любить и жаловать.
    PS2 По совету ilya_compman перенёс в «Ненормальное программирование».
    Support the author
    Share post

    Comments 77

    • UFO just landed and posted this here
        +18
        Вы так говорите, как будто это что-то плохое :)
          +1
          Хорошего в этом тоже мало.
          +19
          Скорее Леопольда Захер фон Мазоха :)
            +1
            Именно. Причём то, что после «Леопольда» — это вопрос)
          +7
          Наверное, подойдет блог «Ненормальное программирование».
          Кстати, для Windows Mobile есть еще один интересный вариант программировать прям на устройстве — среда разработки для языка J из семейства APL-подобных языков. В журнале по ссылке есть еще несколько постов и про сам язык, и про особенности приграммирования на карманных компьютерах.
            +2
            Да, я есть еще немало языков программирования под мобильные устройства, будет время, обязательно напишу статьи.
              0
              а чегонибудь подобного под андроид нету?
              С большим удовольствие разминал бы моск по дороге на работу…
                0
                python? :)
                  0
                  как его там пользовать просветите?
                    0
                    Поставить интерпретатор (или он там уже установлен, я не в курсе), написать скриптик с расширением .py, открыть :) Прошу прощения, я только на эмуляторе андроид видел, видел там ряд подобных скриптиков, поэтому я в данной теме не спец.
                      +1
                      я года 4 назад на КПК дописывал сетевой сервер на нем(питоне). Ноута тогда не было и находился в деревне. Нормально=)
                    0
                    Ну и раз уж такая пьянка… А под айфон/айпод есть что нибудь такое без джейлбрекинга? Порой Питона капец как не хватает. Привык во время учебы писать программки для мелких вычислений на S60.
                0
                Интересно, но безыдейно.

                И мне всегда казалось, что сначала люди покупают и осваивают ПК, а уж потом созревают приобрести КПК. Оказалось, что бывает и наоборот.
                  0
                  Мне кажется, что если бы у меня и был бы пк, я бы все равно кодил на мобильнике:-)
                • UFO just landed and posted this here
                    0
                    Да, да, помню. Именно она и подтолкнула на создание такой игрушки.
                      0
                      Разве на С350? Может на С380 и С650?
                      (у них разрешение экрана разное, а игрушка была на 128х128)
                      И называлась она HungryFish.
                      • UFO just landed and posted this here
                      +22
                        +4
                        Если ваш коммент соберёт больше трёх плюсов, перенесу туда ;)
                          +4
                          Судя по плюсам прошлого коммента, Вам стоит перенести блог именно туда ;)
                      +3
                      цель игры — набрать как можно больше очей <- ?? %)
                        +1
                        А какова может быть еще цель такой незатейливой игрушки :-)
                          +5
                          либо персонаж игры должен собирать глазки съеденных рыбок, либо вы не совсем понимаете разницу между очами и очками =)
                            +2
                            он имел в виду что «очей» и «очков» это два разных слова))
                          +1
                          Это просто вынесло мне мозг.
                          Молодчага. Успехов!
                            +2
                            Спасибо, постараюсь написать еще много интересных статей:-)
                            0
                            да-да а еще мы сравнивали с другом производительность кпк-шников с другом на турбо-паскаль с эмулятора dos :) но то что вы творили на мобильнике — это жесть — уважаю и завидую
                              +9
                              Напомнили мне о долгих субботних лекциях религоведения…
                              Которые были очень продуктивны, благодаря палмовскому OnBoardC :)

                              OnBoardC
                              • UFO just landed and posted this here
                                +3
                                Сам начинал программировать для мобильных платформ на Сименсе М55. К слову, Сименсы — офигенные телефоны были. Я в свое время превратил 1,5 Мб памяти в нем в 5 с чем-то, вроде. Ява там работала просто прелестно, доступ к ФС и внутренностям телефона — великолепный. Сименсы того времени среди других телефонов — это как Линукс среди других ОС ;) Я сильно расстроился, когда его украли, до сих пор подумываю купить себе такой ещё раз, ибо последующие Нокии такого фана не доставляли, не смотря на то, что смартфоны :)
                                  +3
                                  Да, сименсы это легенда. С помощью прямых рук и кабеля dca-510 можно было сделать многое — многозадачность, оформление как на кпк…
                                    0
                                    У меня до сих пор хранится самопальный DCA-510 (:
                                      0
                                      У меня и кабель, и сименс остался, правда его надо подремонтировать немного :-)
                                    0
                                    А я, например, сильнол расстроился, когда был создан альянс benq-siemens, а потом когда siemens совсем закрыл мобильное подразделение.
                                    О, а ещё, помню, переименовывал *.jar (джава-приложение) в *.amr(диктофонная запись), и слушал щелчки и скрипы через динамик.
                                      +1
                                      Да уж, Benq убила Siemens нафик. А какие бы они смогли телефоны сейчас выпустить…
                                      P.S. А ещё был когда-то конвертор для винампа из wav в amr. И можно было увеличить память а потом залить 6-7 песен целиком :) И это когда 2 Мб памяти было круто, а об мп3 в телефоне ещё никто и не думал :)
                                        0
                                        Потом elf'ами и mp3 реализовали в 55-65й серии (:
                                    0
                                    crack_c72 — очень знакомый ник, на forum.s-c.ru видел давным давно, когда у самого с72 был)
                                      +2
                                      хотел зайти на форум, поностальгировать, а его уже и нету((
                                        +1
                                        Хм. Спасибо тебе за портированные патчи и эльфпаки для с72 :-)Вот уж не ожидал увидеть тебя здесь:-)
                                          0
                                          да, было время. сейчас уже нет ни одного сименса в округе
                                          все равно на патчи тянет. на днях предлагали е71 за 1.5к, даже подумывал взять, но надо кабель старый искать и переделывать + skey покупать + винду ставить…
                                            +1
                                            хм..e71 мечтой был:-) Жаль я так и не нашел его, сейчас может быть им и пользовался бы
                                            • UFO just landed and posted this here
                                                0
                                                Сименс е71 а не нокия)
                                      +1
                                      Эх, времена сименсов…
                                      PaintCAD, TextEditor (поддержка 100500 кодировок, многооконность и прочие вкусности...), двухпанельный фтп-клиент, многооконная опера мини, icq-, irc-, jabber-, ssh-клиенты, мобильные сайты, сделанные с мобильного… Ностальгия…
                                        0
                                        удобнее всего писать на e63. ФС — должна быть в инете, я искал как писать php код ОТОФСЮДУ
                                          0
                                          Ахренеть :)
                                          Пристыдили, да. А я всё не могу начать учить хоть какой нить язык, мотивируя недостатком хорошего материала)
                                            +1
                                            Напомнило далекие-далекие времена, когда мобильные телефоны только начали появляться, а компьютеры были не у каждого. Тогда приходилось программировать на бумаге, как и заниматься отладкой, а набирать сам код и компилировать, уже добравшись до любого компьютера.
                                              0
                                              Эх, я тоже первые программы писал на листике в клеточку, сидя на скучных уроках в 6-м классе :) А когда добирался до компьютера лишь набирал их :)
                                              0
                                              ну ты даешь… Я когда то на пхп кодил на телефоне, но ЭТО… crazy
                                                –8
                                                мда, молодец конечно, но это очень напоминает «понты, но без трусов», когда в начале нулевых школьники мечтали о мобилке, и комп им нафиг не нужен был — перед сверстниками не попанутешся же.
                                                  +4
                                                  Причём здесь понты-то? Может, не было возможности приобрести комп, а программировать охота? Наверняка ведь большинство сверстников не понимало человека, который уткнувшись носом в мобильник творил :) Зато (я почти в этом уверен), он может за пояс заткнуть многих из тех, кто учился и начинал программировать на компе, со всеми удобными и настроенными ИДЕ, автокомплитом, средствами автоматизации и пр.
                                                    –1
                                                    пипец — а сотовый тогда, особенно старшие сименсы с явой, был дешевле компьютера? программировать можно было вообще на 486 133 компе очень сносно в 98 винде. не порите чушь.
                                                      +3
                                                      Хм. Такой сотовый стоил раза в два-три дешевле нормального компьютера. А покупать б/у-шное чёрти-что за бесценок — это не выход, ИМХО.
                                                        +4
                                                        Точно, да и мобильник изначально покупался не с целью программирования
                                                        +4
                                                        Не знаю, сименс я приобрел за 3 тысячи.
                                                        Жил я не в городе, возможности не было.
                                                    +2
                                                    Надо быть суппер крутым фанатиком, чтобы кодить на телефоне =)) респект, это действительно круто =)
                                                      +1
                                                      Даа… мне это напомнило одну программку… не впомню уже, какую, на Sie CF62 позволяла на языке наподобие бейсика писать консольные программы… я себе их делал для всяких расчетов в школе…
                                                      Рисовал немного простенького… Но больше всего нравилась идея telnet-клиента для управления компьютером…

                                                      Сколько же денег было потрачено на мобильный интернет?
                                                        0
                                                        От нечего делать прогал на Ruby на iPhone (с jailbreak'ом, естественно), даже Rails как-то запустил, без базы данных, правда. Теперь программирую на том же Ruby на HTC Dream, благо имеется клавиатура.
                                                        Автору респект :)
                                                          0
                                                          Вы программируете на НТС «на отдыхе» или в основное время вместо компьютера? Если вместо компьютера — было бы очень интересно узнать, как преодолевались сложности маленького дисплея, какой IDE/текстовый редактор используется и т.п.

                                                          Мне почему-то кажется, что, например разработка web-проектов на Rails возможна на Nokia n900 — Maemo 5 основана на Debian, значит можно работать в VIM со всеми плагинами, использовать sqlite и т.п. Особенно это интересно, если веб-проект для мобильного веба.

                                                          Кстати, в определенных кругах разработка НА мобильном устройстве считается не просто актуальной, а очень перспективной темой.
                                                            0
                                                            Программирую на устройстве в свободное время, пишу небольшие полезные скрипты для себя, изучаю особенности языка. Для более серьезной разработки использую обычный компьютер, все-таки на телефоне:
                                                            — мало оперативной памяти: программы постоянно вытесняют друг друга из памяти, как на iPhone (просто переключиться между текстовым редактором и браузером не получится, приходится ждать, пока программа восстановится)
                                                            — маленькое разрешение экрана, 320х480: приходится постоянно изменять масштаб страницы в браузере
                                                            — процессор оставляет желать лучшего, все происходит достаточно медленно
                                                            Вот такие pinch points. В общем и целом, программировать можно, но чем сложнее проект, тем сложнее это делать.

                                                            Пользуюсь установленным в chroot Ubuntu 9.04, vim с несколькими плагинами, bash, ruby 1.8.7 для arm ;)
                                                            На N900 все должно быть еще лучше: процессор, память, экран превосходят таковые у Dream. Только вот клавиатура там в 3 ряда.

                                                            Еще интереснее — Pandora. По характеристикам она совпадает с N900, но у нее намного лучше устройства ввода, физически больше экран. Она очень похожа на супер-маленький субноутбук :)
                                                              0
                                                              Прошу прощения за поздний ответ, вот эта Pandora? en.wikipedia.org/wiki/Pandora_(console)
                                                                0
                                                                Да, это она самая. Красавица.

                                                                Я сейчас обзавелся MID SmartQ V5, подключаю к нему HTC Dream через RemoteDroid в качестве клавиатуры, тачпэда и EDGE/3G-модема :)
                                                                На устройстве имеются 256Мб памяти, полноценная Ubuntu/ARM со всем актуальным софтом, USB и HDMI порты. Недавно появились сборки Google Chrome. Веб-разработка вполне возможна.
                                                          0
                                                          нет, блог «ненормальные» — это для дураков, тут нужен блог «я упорный»
                                                            0
                                                            Просто русское слово «ненормальный» в данном случае не совсем точное. Блог называется crazydev, а быть crazy можно и в хорошем смысле.
                                                            0
                                                            обоже. впрочем, я когда-то на кпк Кассио на бейсике тоже что-то вырисовывал )
                                                              –1
                                                              зачот!
                                                                0
                                                                Жесть, конечно)

                                                                У меня, правда, тоже был отдалённо похожий опыт. В прошлом году поехал я отдохнуть в Крым на пару деньков. Сняли с девушкой номер в гостинице с громадным балконом с видом на море… и тут мне звонит заказчик, мол надо срочно наполнить сайт контентом (сайт телеканала, телепрограмма на неделю). Благо, CMS-ка позволяла воспользоваться штатным нокиевским браузером, а .doc без труда открылся на моём Nokia E50.

                                                                В итоге три часа трудов и пыхтений под прохлаждающие напитки, и грязное дело было сделано :)

                                                                  –1
                                                                  »В итоге три часа трудов и пыхтений под прохлаждающие напитки, и грязное дело было сделано :)

                                                                  Интересно, только я после прочтения этой фразы подумал, что с девушкой вы вовсе не программированием в тот момент занимались?; )
                                                                  0
                                                                  Я для покета даже миниклаву купил, но всё равно это было сродни чистки квартиры зубной счёткой — моя психика не выдержала и девайс в основном стал асечным клиентом.
                                                                  Я горжусь вышим терпением и целеустремлённостью.
                                                                    +1
                                                                    Гвозди бы делать из этих людей!
                                                                    • UFO just landed and posted this here
                                                                        0
                                                                        А что было еще делать? Был бы пк, может бы и не извращался так
                                                                        0
                                                                        эх… Я программировать начинал именно на телефоне (смартфон nokia). Было одно время, когда компьютера под рукой не было (был в армии), там и научился программированию на питоне. Пару известных проектов даже было на то время.
                                                                        Со смартфона тогда писал программу, упаковывал в sis, создал даже wap сайт, с помощью написанного мною же ftp клиента :)
                                                                        Иногда ко мне обращаются за консультации люди, которые находятся в местах, не столь отдаленных. Представляете, и там сидят люди, которые пытаются осваивать (иногда успешно) программирование. Всего то нужно — любой смартфон, пусть даже и старенький.

                                                                        Only users with full accounts can post comments. Log in, please.