PointJS Игровой Движок | Александр Птичкин
461 subscribers
1.16K photos
203 videos
24 files
426 links
1. Игровой движок: pointjs.ru
2. Обучение анимации: mult-uroki.ru
2. MMORPG игра: @Zombie_Tap_bot
4. Сотрудничество: @multuroki
5. Стикеры: https://t.iss.one/addstickers/Zombie_Tap

Привет. Меня зовут Александр Птичкин. Я разработчик игрового движка PointJS
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Часто слышу вопросы про мобильную адаптацию. Можно ли на PointJS ее сделать. Да легко! Просто получите ширину экрана командой:

game.getWH().w;


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

var ball4 = game.newImageObject({
file: "resources/ball4.png",
x: WH.w/2-(50/(s*1.3))+32/s,
y: 1280/s-920/s,
w: 50/s*1.3,
h: 50/s*1.3,
userData: {
moving: false,
velocity: point(0, 0)
}
})


Где s это поправочный коэффициент :

var s = 704/WH.w;
👍41🔥1
Когда жил с родителям, в детстве с папой смотрели снукер (у нас было спутниковое кабельное ТВ). Все тогда придумывали себе кумиров. Моим был Ронни О’Салливан. Посути, это ТВ было дверью в мир (компов то было). Много программ про животных, научных каналов, зарубежная музыка (OZZY OSBOURNE...) и т.д. А ночью на этих же частотах этих же каналов транслировали порно 😁.

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

Добился полного соответствия механики игры с реальной жизнью (той что я помню по крайней мере).

7 лет назад я даже не знал как сделать простейшую игру - сейчас же повторяю механику живых игр и переношу их в программный код. 😎
👍7🔥21😁1
Как сталкивать шарики?

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

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

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

А вот от стенок шарики отскакивают через проверку статикбоксов.
👍7
Бильярд доделал. Заработал на заказе 100к минус налог самозанятого 4%. Неплохо так за неделю. Скоро уже покажу. А пока начал делать следующий заказ - танчики.
🔥9👍4
А вот и хорошие новости подкатили. Зарегали прогу в реестре Роспатента 😎
🔥13👍3👏1
Сегодня ездил к юристу, забирал сертификат регистрации программы. А он мне ещё на день рождения книгу подарил. Вот буду изучать как захватывать мир 😈
👍9
Сегодня поднял все грамоты и награды и переоформил раздел Достижения на сайте PointJS. Смотрится теперь солидно ☺️
👍10🏆3👻1
Разработчики "Первого Российского движка" смотрю гордятся что меня заблокировали и не стесняются про это высказываться в таком формате...а это уже не красиво. Думают что прикрываясь ВК можно делать всё что угодно. Ну до поры до времени...

Сейчас как "Борщь" будут меня ещё 5 лет потом вспоминать 😎
😁5🗿1
Ну а тем временем, в этом году уже в двух государственных учебных заведениях начнут вести занятия в среде разработки игр PointJS IDE. Вовремя мы подготовили договор 😎. А вчера появился и третий возможный университет (школа).
71👏1
Сегодня ночью создал новые контроллеры Touch касания для движка PointJS ориентированные на мобильные игры и на множественные касания (хоть 1000 сделай на сцене) - их события пересекаться не будут.

Вторая мобила занята - не могу снять видео. Завтра покажу как Танк гоняет 😈
🔥4👍2🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
И так, два вечера работы и  готова основная механика. Сегодня буду делать мобов

Получил тут в комментарии отзыв типа "И на такую хрень потрачено два вечера?".

Надо дать комментарии, а то есть народ , который до сих пор не понимает принцип создания игр. На сам код рабочей игры потратил пол часа. Два дня потрачено на верно выстроенный концепт игры готовый к публикации.
3👍3🔥2
Начал разрабатывать врагов танков. 5 лет назад я бы создал вручную массив из 20 или 40 танков (для мультиплеера). Сейчас планирую сделать массив из просто 40 цифр где каждые пять повторяются и то на автомате сделаю. А каждая цифра - это индекс фотографии танка. Буду выбирать четыре случайных числа из массива и согласно выпавшему числу инициализировать объект на сцене, и после этого удалять эти цифры из массива.
👍4
Ответ на часто задаваемый вопрос: почему в играх не пользуется код с уроков, ведь всё уже давно было (про танки).

Да, у меня есть исходники всех уроков и так было бы ещё быстрее. Но не использую я их по другой причине.

Я люблю разрабатывать код каждой игры с нуля. Тем самым каждый раз можно проверить разные варианты и получить наилучший или даже что-то изобрести.
👍4
Сейчас приготовили с ребёнком печеньки. Отгадайте какая моя? 😊

Многие могут подумать по фотографии, что пост вообще не по теме. Но на самом деле этот пост напрямую относятся к созданию игр. Программирую я игры ночью по часика два в день когда ребёнок уже спит и тишина есть и никто не мешает. Оставшиеся 80% дня я трачу на придумывание правильной идеи для программирования. Потому что идея - это основное. Код можно и не знать. Но если идея нерабочая, никакое знание кода не поможет.
👍62
Решил в игре про танки не обучать врагов реальным атакам и слежкам за игроком. Все оставил на случай рандома. Только задал приоритет движения(стремления) вниз к орлу. Кстати, уже появился моб. Даже не обученный уже снес пол сцены и орла 😦
👍4🔥4
Сегодня попробовал под игру использовать генератор уровня другого типа (как делали ранее). Под каждую задачу ищу лучшее решение. И вот результаты.

Плюсы:

1. Карта уровня созданная через Level.pjs весит 80.4 КБайт. А по старинке весит 873 Байта. Разница ощутимая.

2. Быстрое создание симметричной сцены просто дубликатом. Сделал пол сцены - скопировал что было выше и все.

3. Отсутствие json файла - а значит меньше нагрузка и быстрее скорость подгрузки.

Минусы:

Чуть дольше делать, но спустя 7 лет ручного написания кода нам не привыкать 😊
🔥5👍2🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Ну что ж, ещё один вечер работы и клиентская часть игры почти сделана. Осталось сделать красивое появление, взрывы и отображение счёта и жизней.
🏆5👍3🤗1
Media is too big
VIEW IN TELEGRAM
Тестирование мобов на скорости. Если через пол часа не потеряю ни одного танка значит система столкновений работает четка. С учетом что границы сцены 1px. Всегда делаю такие проверки в играх на движение.
🔥5👍2
Как сталкивать вражеские танки между собой ?

Сегодня решал техническую задачу - потратил на неё примерно часа полтора. Повторюсь, основное в программировании - это идея а не код.

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

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

Вот в этом и проблема. Как сделать столкновение танков но без столкновения когда они уже друг в друге.

Решение нашлось такое.

Условия столкновения танков окутать в условие дистанции. Если по каким-то причинам дистанция между танками уже стала маленькой значит пока не сталкивать и ждать пока танки выйдут друг из друга.
👍3🔥2🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Итак. 20 танков двигаются, сталкиваются и никто ни на кого не заезжает и не застревает. Кстати видно, что мобы столпились справа. Это проверка того, что им задан приоритет двигаться к цели.
🔥7👍1