КОТ++
Прикладное программирование
Системное программирование
Программирование микроконтроллеров

Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования. (c) Линус Торвальдс

Опубликовано
Комментарии 0

Если вы любитель состряпать очередной высер на юнити или в геймейкере. Или же вы пишите неебические скрипты на питоне, максимальные возможности которых это решить квадратное уравнение. То закрывайте вкладку, досвидания, всего вам доброго. Речь сейчас пойдёт о вас. И кстати мамкины кулхацкеры, которые юзают в очередной раз Ettercap и Metasploit в Kali Linux и пытаются получить доступ к страничке своей подружки, вас это тоже каснется, но когда-нибудь позже. Но ни в коем случае ни хочу задеть тех, кто реально с умом пользуется всеми вышеперечисленными инструментами.

Какая разработка игр была раньше? Перед разработчиками стояла дикая и невыполнимая задача: написать свой движок, саму игру и нарисовать графику. Сейчас почти также? Начнём с того, что для всех движки уже готовые. А продолжим тем, что из доступных инструментов не было удобных юнитей, был матёрый ассемблер для самых лютых прогеров. И при этом нужно уместить движок игры, саму игру и графику в память какого-нибудь картриджа сеги. А в картридж сеги влезает чуть меньше чем нихуя. И к тому же всё это сооружение не должно лагать. 99/100 сегодняшних прогеров скажут: СЛОЖНА!!!

Поэтому статус разраба игр и программиста в целом ранее был выше. Если ты разрабатываешь игры, то компилить код игры ты мог исключительно своей головой, мог знать кучу различных приёмов и хитростей по оптимизации.
А что же сейчас? А сейчас и компы мощные, которые простят огрехи в алгоритмах, и движки, которые сделают всё за вас. Это же хорошо, не так ли? Это тоже самое, что изобрести парктроник для помощи в парковке, но потом не удивляйтесь откуда берутся люди, которые не могут припарковаться самостоятельно без помощи техники. В программировании также. Дай программисту безумно полезный инструмент, который не будет его ограничивать ни в чём и программист будет писать настолько кривожопый код, что сатана подготовит отдельный котёл лично для этого жопорукого уебана. Обилие современных библиотек, движков и инструментов расслабляет разработчиков и делает из них твердолобых бездарей.

А может и не делает? Может только привлекает в программирование бездарные личности? Которые по сути ничего и не могут кроме как копипастить код со стековерфлоу и со страхом ждать момент, когда тимлид узнает, что джуниор – долбоёб, который судорожно ищет в инете очередной кусок кода, который спасёт ситуацию. Мне кажется верным именно этот вариант.

По сути получается, что большое количество инструментов снижающее количество начальных знаний для старта разработки снижает порог в хода в эту индустрию. Порог входа снижен – и тут же туда прутся уебки. Они уже повсюду!

Но в чём же ещё проблема? Так в том, что программировать игры уже не так круто. Ведь все недоразвитые думают, что разработчик юзает хитровыебанное юнити, в котором за один вечер можно сваять проект и кидаться им перед друзьями в стиле «я невъебенный гейм разраб». А то что чел изучил хитрости в работе конечной платформы, паттерны игрового программирования и вероятней всего написал свой движок, заточенный под его игру, так это никому уже не понять, кроме небольшой группы разрабов, которые в теме.

Юзайте юнити, юзайте движки, юзайте либы, но не забывайте изучать как это всё работает изнутри, всем удачи в разработке!

Теги
Автор

Опубликовано
Комментарии 0

Всякий раз, когда упоминаю то, что отлично прогаю на AS3, в ответ слышу одно: «Ты чо, flash же умер давно!». И в качестве аргумента выступает одно и то же, что на флеше уже никто ничего не делает. От этого ловлю дикий facepalm. С чего вы это всё берёте?

Чтобы развеять миф о том, что на флеше ничего уже не делают и не сделать пишу эту статью.

Для начала рассмотрим flash в мире браузеров. Flash якобы заменили HTML5, и поэтому flash ушёл умирать. Но даже на данный момент HTML5 не догоняет флеш, а возможно не догонит его никогда. HTML5 это прежде всего язык гипертекстовой разметки. В 5-ой версии добавлены всякие штуки для удобной работы с мультимедиа. Безусловно HTML5 это очень хорошая штука и позволяет делать сайты со всякими интерактивными плюхами без использования дополнительных плагинов. Но мне попадались куча сайтов, где этот хвалёный HTML5 давал жуткие тормоза, где Flash бы себе такого не позволил. С простыми анимациями HTML5 справляется, но уже даже на воспроизведении видео он даёт тормоза. Поэтому до сих пор на многих сайтах можно выбрать плеер для проигрывания видео (Flash или HTML5).

Но тут проблема не только у юзеров, а ещё и разработчиков. Флеш является некой виртуальной средой, в которой уже и запускается само флеш приложение. Разработчику без разницы где эта среда будет запущена, т.е. неважно под какой браузер разрабатывать приложение, оно везде будет работать одинаково. Поэтому для игр и для сложных интерактивных приложений Flash очень хороший вариант. Безумно сложно будет протестировать работу приложения во всех браузерах, ведь порой даже бывает неудобно проверять и подстраивать под все браузеры простую html вёрстку. Делая же на Flash, разработчику не надо заботиться о том, что очередной браузер чем-то может выделиться, ведь каждый браузер хочет как лучше, а получается как всегда. Ах да, ещё у HTML5 нет аппаратного ускорения, которое безусловно нужно для игр. Есть сырой WebGL, но связка HTML5 и WebGL не может соревноваться с флеш, флеш всё равно выиграет.

Поэтому на флеше до сих пор появляется множество браузерных игр. Поиграть в них можно, например, на одном из самых крупных флеш порталов http://www.kongregate.com/ И даже во ВК есть флеш игры.

Теперь перейдём на мобильные платформы. С помощью Adobe AIR можно, используя флеш, разрабатывать под мобильные платформы. А HTML5 такое умеет? Ладно, при чём тут HTML5, возьмём к примеру Unity. Unity тоже позволяет создавать мобильные игры и при чём очень хорошие. Но из-за того, что unity предназначен для любых игр, в него понавешано множество всяких штук, которые вряд ли будут использоваться при создании любой 2d игры. Использоваться не будут, а место в конечном файле игры занимать будут, а на мобильных платформах вес является важной вещью, отчасти потому, что игру будут скачивать через интернет, порой человеку, который сидит с мобилы не через вайфай очень важно, чтобы игра вместо 40мб весила всего 10мб. Ведь тогда сидя в пробке он поиграет в игру, а не будет ждать пока она скачается.

К тому же на флеше вы можете написать собственный движок, который будет заточен только для ваших игр. Но если вы ёбаный школьник, то движок вам писать не надо и Unity для вас лучшее решение, т.к. порог входа для разработки игр на unity минимальный и знания программирования для создания очередной вырвиглазной игры почти не нужны.

Но Adobe AIR позволяет разрабатывать игры ещё и под десктопную виндовс. Обилие неплохих таких игр на стиме говорит само за себя.

На последок хочу рассмотреть такую фишку флеша как создание анимационных мульфильмов. Наличие от Adobe удобного флеш редактора позволяет создавать с нуля шедевры, или не шедевры, если у аниматора руки из жопы.

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

Возможно кто-то захочет прокомментировать в стиле: «У автора бобмит, он просто консерватор, любит старые технологии». Может так оно и есть, поэтому не тратьте своё время на банальные комменты.

Теги ,
Автор

Опубликовано
Комментарии 0

Решил попрограммить на Wct. Для тех кто не знает, Wct – система счисления, которая полностью состоит из букв (A, B, C, D, E, F, G, H, I, J, K, L, M, N, P, O). Подробнее тут.
Такое программирование будет очень интересно для тех, кто любит поразмять мозги. Написал прогу, которая выводит I LOVE WCT PROGRAMMING. По началу было трудно, но быстро разобрался в Wct. Прога под dos, т.к. если писать под windows или linux, то после может понадобиться психотерапевт.
Код моей первой Wct программы:


LEAJLKANABMNCBLEAIMNCBMNCAEJCAEMEOFGEFCAFHEDFECAFAFCEOEHFCEBENENEJEPEHCE

PS: Замахнуться что ли на игруху на Wct :D

Теги ,
Автор

Опубликовано
Комментарии 0



В этом посте хочу рассказать про одну из игр написанных мной. Игру я делал при участии в команде разработчиков VilPig. Суть игры в том, что пользователю предстоит управлять горячим Джиходом, захватывать нефтяные вышки и уничтожать вражеских для него солдат. В игре присутствует широкий арсенал оружия, а также большое разнообразие врагов. Геймплей в игре бесконечный.

Приложение разработано под Андроид с использованием технологий Adobe Air. Также в игра построена на базе моего движка, о котором можно прочитать тут. Все аспекты этого «секретного» движка можно будет узнать в следующих статьях.

Ссылка: https://play.google.com/store/apps/details?id=air.com.varvar.jihod

Теги , , ,
Автор

Опубликовано
Комментарии 0

Разрабатывая одно приложение наткнулся на ошибку в переводе времени из одного часового пояса в другой.
Требовалось написать функцию перевода из текущей тайм зоны в тайм зону Москвы.

Получилась такая функция:

public Date getMskDateTime(Date d)
{ SimpleDateFormat dateFormatGmt = new SimpleDateFormat(«yyyy-MMM-dd HH:mm:ss»); dateFormatGmt.setTimeZone(TimeZone.getTimeZone(«GMT+3»));

SimpleDateFormat dateFormatLocal = new SimpleDateFormat(«yyyy-MMM-dd HH:mm:ss»); TimeZone tz = TimeZone.getDefault(); dateFormatLocal.setTimeZone(tz); try { return dateFormatLocal.parse(dateFormatGmt.format(d)); } catch (ParseException e) { return new Date(); } }

После были замечены баги, время переводится не всегда верно.
Проверяю у себя (моё локальное GMT+5) всё отлично работает, у другого же человека, у которого локальное GMT+6, время переводится неверно.
Перевожу у себя на GMT+6 и выявляю ту же ошибку. Перевожу на GMT+7 и опять всё верно переводит.
Т.е. при переводе на GMT+3: GMT+5 переводит на 2 часа, GMT+6 переводит опять на 2 часа (должен на 3), GMT+7 переводит на 4 часа как и должен.
Чудеса!
Ставлю у себя GMT+6. Вывожу то, что хранится в TimeZone.getDefault(). Вижу GMT+6.
Принудительно ставлю GMT+6 вместо default:

TimeZone.getTimeZone(«GMT+6»);

И всё снова верно работает. МАГИЯ!
Думаю, что это баг андроида. Тестил на своём 4.4.

Решил прикрутить небольшой костыль, чтобы избавиться от проблемы.
В итоге решение выглядит так:

public Date getMskDateTime(Date d)
{ SimpleDateFormat dateFormatGmt = new SimpleDateFormat(«yyyy-MMM-dd HH:mm:ss»); dateFormatGmt.setTimeZone(TimeZone.getTimeZone(«GMT+3»));

SimpleDateFormat dateFormatLocal = new SimpleDateFormat(«yyyy-MMM-dd HH:mm:ss»); TimeZone tz = TimeZone.getDefault(); long hours = TimeUnit.MILLISECONDS.toHours(tz.getRawOffset()); long minutes = TimeUnit.MILLISECONDS.toMinutes(tz.getRawOffset()) – TimeUnit.HOURS.toMinutes(hours); minutes = Math.abs(minutes); tz = TimeZone.getTimeZone(String.format(«GMT+%d:%02d», hours, minutes)); dateFormatLocal.setTimeZone(tz); try { return dateFormatLocal.parse(dateFormatGmt.format(d)); } catch (ParseException e) { return new Date(); } }

Теги , , ,
Автор

| 1 | | 4 | 5 | 6 | 7 | 8 |