Программист-рукожоп #2

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

Осторожно - много текста и туча картинок.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

С чего все началось

Будучи еще школьником с непомерными амбициями я мечтал о создании игр (грабить корованы, массивный мультиплеер и тому подобное), однако понимал что это дико сложно да и недостаточно знаний чтобы сделать что то годное, поэтому начинал с того что умел - с паскаля. Логику игровых процессов и циклов понимал с создания консольных игр аля "угадай цвет", "угадай число" или что то посерьезнее, вроде маленького казино из нескольких консольных приложений с аккаунтом в файле.


Позже я для себя открыл программу MidletPascal, которая позволила некоторые навыки использовать в настоящем программировании игр для j2me телефонов. И тут понеслось..

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

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Итерации файл-менеджера, который был чем то вроде псевдо-ос. К последней версии даже замахнулся на создание скрипт-языка, но не осилил парсинг уравнений.


Создавать для телефона было конечно интересно, но у меня особо горело желание создать что либо для компьютера. Так как я не был осведомлен в существовании удобных для новичка движков.. то закономерно пришел к тому что мне нужно создать свой "велосипед". Благодаря Delphi я познакомился с программированием графики на OpenGL и даже кое что создал

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

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

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Убогая физика и отсутствие интерфейса, но на собственном движке. Был доволен как слон.


Случилось так что в одно время я заинтересовался созданием игры на мобильник чуть сложнее чем те угадайки которые я писал ранее.. и так вышло, что попробовать решил перенести майнкрафт в j2me под 2D графику (да, сейчас этих клонов пруд пруди, но мне казалось что я сделаю лучше, что возможно так и вышло)

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

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

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Даже были попытки создать 3D движок, но дальше прототипа дело не зашло.


Однако как бы не было весело делать игру под старые мобильники, мне нужен был опыт в PC, и все же решился попытаться использовать появившийся тогда Unity3d

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

После десятков попыток создать что либо, у меня вроде вышло сделать копию той игры которую я делал в Delphi на OpenGL, с физикой и графикой стало получше, но ее я все равно не закончил - уровней было всего штук 5, а часть предметов в игре так и не заменил на нормальные вместо болванок.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Один из экспериментов - что то вроде выживания космонавта забытого в космосе. Выжить нужно было в течении 5 минут. На игрока постоянно воздействует нагрев от солнца, протечка кислорода и необходимость в подзарядке.


Об онлайн игре

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

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Примитивная стилистика и попытка начать писать сетевой код, который я тогда еще не умел, но очень хотел сделать. Благо к тому времени я мало-мальски познакомился с C# и начал осваивать сетевой код.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

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

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android
Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android
Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

В итерации 3-4 (да я снова начал заново), вроде вышло чуть симпотичнее. Осилил создание аккаунтов и сохранения (до смешного - в отдельных файлах). Это было немногим лучше предыдущей версии и была даже попытка сделать инвентарь, но все же это был только эксперимент.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Где то к шестой попытке я уже знал как работать с базами данных, как создавать стабильное соединение и даже попробовал использовать сторонний сетевой движок с которым было удобно хостить игру. Основной целью было разобраться в разработке игровой логики онлайн игры. Как оказалось - самым сложным для меня стал интерфейс.

Десятки окон, сотни взаимодействий и клавиш, это все превращалось в непереносимую рутину, особенно со старым UI который отрисовывался вручную по координатам.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

Как то даже попробовал сделать лаунчер. Конечно многого не хватало, но игру можно было обновлять автоматом.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android
Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

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


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


О веб

Да, с появлением Canvas и HTML5 стало любопытно о том что можно сделать в браузере. Особо ничего не сделал кроме опять же "экспериментального" движка - надстройки над канвас и пару простецких демок на нем. Если интересно, они до сих пор живы, как первая так и вторая.

Программист-рукожоп #2 J2me, Длиннопост, Gamedev, Unity3D, Android

О настоящем времени

На данный момент я провел еще множество маленьких экспериментов, в которых пытался разобраться в том как оптимизировать игру и упростить себе жизнь. Довольно классным нововведением в Unity конечно стал новый UI который значительно облегчил создание интерфейсов, но это означает что ту же онлайн игру придется переделывать целиком заново, а к такому я пока не готов.


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


The end

Как и писал в первом посте, все эти эксперименты привели к тому что я занимаюсь только экспериментами и на полноценные проекты давит эта вредная привычка.

Надеюсь вам было интересно мое повествование про жопорукого программиста.


P.S: В добавок к танкам

Начал я их уже как пару недель и занимаюсь на выходных, по возможности выкладываю ролики с тем что сделал на Youtube:

Первый ролик: https://youtu.be/UVl4udS7UmI

Второй ролик: https://youtu.be/H2kNM0W9c2A


И спасибо тем кто подписался, рад что вам интересно =)

Лига Разработчиков Видеоигр

6.8K постов22.2K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

9
Автор поста оценил этот комментарий
Вот уж не ожидал вновь вспомнить об этой игре. Когда-то Ваш порт майнкрафта был одним из лучших, спасибо :D И этот сайт на юкозе)
раскрыть ветку
1
Автор поста оценил этот комментарий

С MMO и сетевыми играми есть другая проблема - читеры. Да, ты можешь сделать работающий мультиплеер и один, но потом его взломают и вся твоя игра, которую разрабатывал годами умрет за некоторое не очень длительное время.
Без отдела ИБ вообще непонятно как вытащить мультиплеерный проект...разве что, у тебя мультиплеерная тактика вроде XCom - там есть варианты(всего два игрока, один из которых хост). Да и, в конце концов, игрок может просто покинуть игру с читером.

раскрыть ветку
1
Автор поста оценил этот комментарий
В одиночку всегда сложно что то делать, и более того, масштабные проекты не делаются в одиночку. Есть более простой и эффективный способ - найти нормального партнера , единомышленника, или даже группу людей, и все получится. Сам долго мучался в своем бизнес - начинании, но судьба свела с человеком, с которым все пошло как по маслу, и что интересно, у него тоже.

ТСу, проведи паралели между успехом групп людей, и одиночек в твоей сфере деятельности, и все станет ясно. Подобный опыт обычно оставляем при себе, но появилось желание помочь)))
раскрыть ветку
Автор поста оценил этот комментарий

Привет, вопрос. Юнити. У меня уровень формируется из префабов (5 типов)-камень, дерево,пол, вода , мифрил. Карта уровня - 2х массив с кодом типа префаба. Однако построение даже небольшого уровня (60х60 блоков) занимает очень много времени. Есть идеи куда копать?

раскрыть ветку
Автор поста оценил этот комментарий

@galzuris, привет, если у тебя что-нибудь осталось по j2me или midlet pascal, то пожалуйста, напиши мне в телегу, мой ник там -  @madrat96