Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
🔥 Дрифт и гонки без правил!
Садись за руль, жги резину и уноси баллы в безумных поворотах!
🚗 Реалистичный дрифт
🏁 Захватывающие трассы
💨 Улучши свою тачку и побеждай!

Дрифт Без Лимита

Гонки, Симуляторы, Спорт

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Web + Программирование

С этим тегом используют

IT Web-программирование Сайт Веб-разработка Дизайн Javascript Программист IT юмор Разработка Python Картинка с текстом Юмор Все
256 постов сначала свежее
4
scale.earth
scale.earth
8 дней назад

Мир на экране. Просто о цифровых картах⁠⁠

Карты всегда сопровождали человека. Раньше работа с картой требовала определённых навыков: уметь читать масштаб, определять рельеф, знать условные знаки. Даже чтобы просто понять, как доехать из пункта А в пункт Б, нужно было повозиться.

Сегодня всё проще: достаточно открыть приложение на телефоне, указать точку назначения — и за секунды получаешь оптимальный маршрут. Цифровизация и развитие мобильных технологий сделали карты не только доступными, но и понятными даже тем, кто никогда не держал в руках компас.

Но как работают современные цифровые карты? Что стоит за кнопкой "проложить маршрут"? В этой обзорной статье мы разберёмся в основах: как устроены цифровые карты и из чего они состоят.

Что такое карта? И что такое цифровая карта?

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

Цифровая карта — это электронный аналог традиционной карты. Она хранится в цифровом виде и отображает географические данные с помощью компьютерных технологий. При этом цифровая карта может быть не просто «картинкой» на экране — это интерактивная система, способная реагировать на действия пользователя: масштабирование, поиск, навигацию и многое другое.

На первый взгляд, определения бумажной и цифровой карты похожи. Но есть важное отличие: бумажная карта неизменна — у неё фиксированный масштаб, уровень детализации и генерализация (то есть степень упрощения информации). Цифровая карта — динамична. При изменении масштаба (зума) автоматически меняется и объём отображаемой информации. Чем ближе «приближение», тем больше деталей: появляются мелкие дороги, здания, названия улиц. А при «отдалении» — всё упрощается до крупных объектов, чтобы сохранить читаемость и избежать перегрузки экрана.

Мир на экране. Просто о цифровых картах Опрос, Наука, Карты, География, Геоинформационные системы, Программирование, Разработка, Web, Научпоп, Образование, Длиннопост

Фрагмент Яндекс карты. Один участок, разный масштаб и разная генерализация

Основа карты — картографическая проекция

В основе любой карты лежит картографическая проекция. Откуда она взялась? Всё просто: Земля имеет форму шара (точнее — геоида), а карты, к которым мы привыкли, — плоские. Чтобы изобразить поверхность шара на плоскости, нужно её как-то "развернуть". Именно для этого и существуют проекции — математические способы переноса сферической поверхности Земли на плоскую карту.

Одной из самых известных является цилиндрическая проекция. Представьте: Землю как бы помещают внутрь цилиндра, затем делят по меридианам на равные зоны — "дольки", которые проецируются на внутренние стенки этого цилиндра. Затем цилиндр разворачивают в прямоугольник. В итоге получается привычное нам прямоугольное изображение карты, но с характерными искажениями — особенно заметными ближе к полюсам.

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

Мир на экране. Просто о цифровых картах Опрос, Наука, Карты, География, Геоинформационные системы, Программирование, Разработка, Web, Научпоп, Образование, Длиннопост

Проекции 60-ти градусных зон на стенки цилиндра.

Отсюда и известный эффект: Гренландия на карте выглядит почти как Африка, хотя на деле она меньше почти в 14 раз. По этой же причине самолёты летают "по дуге" — так называемой ортодромии — ведь это действительно кратчайшее расстояние между двумя точками на сфере, хотя на карте оно выглядит как дуга, а не прямая линия.

Мир на экране. Просто о цифровых картах Опрос, Наука, Карты, География, Геоинформационные системы, Программирование, Разработка, Web, Научпоп, Образование, Длиннопост

Размер Гренландии (красным) относительно Африки

Из чего «состоит» карта: слои и данные

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

Слои различаются по типу данных, способу отображения и назначению. Вот основные виды:

Растровые слои

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

Мир на экране. Просто о цифровых картах Опрос, Наука, Карты, География, Геоинформационные системы, Программирование, Разработка, Web, Научпоп, Образование, Длиннопост

Растровый слой поверх базовой картографической основы

Векторные слои

Векторный слой — это набор географических объектов, описанных точками, линиями и полигонами. Например, точка может обозначать магазин, линия — дорогу, полигон — здание или парк. К каждому объекту могут быть привязаны атрибутивные данные — дополнительные характеристики: адрес, этажность, материал, название и пр.

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

Мир на экране. Просто о цифровых картах Опрос, Наука, Карты, География, Геоинформационные системы, Программирование, Разработка, Web, Научпоп, Образование, Длиннопост

Векторные слои (красным) с атрибутивным описанием

Трёхмерные (3D) слои

Такие слои содержат 3D-модели зданий и других объектов. Они позволяют визуализировать городскую среду и рельеф в объёме, создавая более реалистичное представление о местности. 3D-карты особенно полезны в архитектуре, навигации в мегаполисах и при планировании городской инфраструктуры.

Мир на экране. Просто о цифровых картах Опрос, Наука, Карты, География, Геоинформационные системы, Программирование, Разработка, Web, Научпоп, Образование, Длиннопост

Трехмерная модель Манхэттена на карте

Базовые картографические слои

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

Примеры таких карт: Google Maps, Яндекс.Карты, 2GIS. Ещё один важный проект — OpenStreetMap (OSM) — свободная, редактируемая карта мира, созданная сообществом энтузиастов. В отличие от закрытых коммерческих решений, OSM можно использовать в собственных проектах при соблюдении условий лицензии.

Базовые карты тоже состоят из слоёв и требуют сложной обработки: векторизации, хранения и синхронизации огромных объёмов данных. Часто для их подключения используют протокол TMS (Tile Map Service) — способ раздачи мозаичных веб-карт по квадратам (тайлам), подгружаемым при просмотре.

Как создать свою карту?

Если вы хотите создать собственную цифровую карту — будь то для проекта, визуализации данных или просто «для себя», — вариантов существует много. Всё зависит от ваших задач, уровня подготовки и желания углубляться в тему.

В основе большинства решений лежат Геоинформационные системы (ГИС) — это инструменты для работы с пространственными данными: их визуализации, анализа и редактирования.

ГИС: профессиональный подход

ГИС можно условно разделить на два типа:

Настольные (десктопные) ГИС — устанавливаются на компьютер. Наиболее популярный бесплатный вариант — QGIS (open-source, подходит для обучения и реальных задач). Для более сложных проектов используется ArcGIS — мощная коммерческая платформа от компании Esri.

Облачные (веб-ГИС) — работают через браузер и часто используются для командной работы или размещения карт онлайн. Как пример NextGis Web.

Работа с ГИС требует некоторых знаний: нужно понимать, как устроены пространственные данные, уметь подключать источники информации и разбираться в слоях. Но взамен вы получаете гибкий и мощный инструмент.

Веб-приложения: программируем сами

Если вы знакомы с JavaScript и хотите создать свою интерактивную карту для веба, подойдут специализированные библиотеки:

Leaflet — лёгкая и простая библиотека, отлично подходит для начала.

OpenLayers — мощнее, с большим набором функций.

MapLibre — форк Mapbox GL JS с поддержкой векторных тайлов и 3D.

Эти библиотеки позволяют строить карты с нуля, подключать слои, настраивать интерфейс и добавлять интерактивность. Однако для более сложных карт может понадобиться и серверная часть — для хранения данных, управления пользователями и API-запросов. Тут помогут:

GeoServer — open-source сервер для пространственных данных.

MapServer — быстрый и гибкий движок, особенно популярен в проектах с высокой нагрузкой.

🧩 Конструкторы карт: без кода и головной боли

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

Популярные платформы:

Яндекс.Конструктор карт — простой интерфейс, идеален для базовых задач.

Конструктор карт от 2ГИС — похож по функционалу на Яндекс.

Конструктор карт "Масштаб"— сочетает простоту с хорошим функционалом, подходит как для личных, так и для образовательных проектов.

📌 Заключение

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

Был ли опыт работы с цифровыми картами?
Всего голосов:
Показать полностью 6 1
[моё] Опрос Наука Карты География Геоинформационные системы Программирование Разработка Web Научпоп Образование Длиннопост
0
5
Eye.Providence
Eye.Providence
Не топовый автор
Серия Почему нельзя шутить на работе
1 месяц назад

На работе нельзя шутить 4⁠⁠

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

И вот что, это всегда было как выстрел себе в ногу.

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

UDP. Я пишу истории которым с десяток лет. Когда происходили эти момент - я был начинающим программистом. В данном посте, это была компания, где работал единственный веб разработчик - это я. Мне говорили что сделать, я делал. В код мне никто не лез.

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

Недели 2 я упарывался на работе, днями... Ночами... Надо было мне залезть в БД. Открываю воркбенч в пятницу вечером...

На работе нельзя шутить 4 Личный опыт, IT, IT юмор, Программирование, Программист, Web, Мат, Длиннопост

Меня ничего не смутило, вылезает табличка

На работе нельзя шутить 4 Личный опыт, IT, IT юмор, Программирование, Программист, Web, Мат, Длиннопост

Ну конечно же я мышкой выбираю пункт 2

Сижу такой. Сижу. И тут до меня доходит, что я сделал. До сих пор не знаю зачем и каким образом... Ебанулся.

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

Объясняю что случилось - я очистил в базе данных таблицу. В которой была связка пользователя и его устройств. Те информация, что у пользователя василия например есть устройство с серийником 123, оно называется "Лошадь муренка", иконка на карте в виде сердечка, мобильный номер ответственного пастуха 8-888-083-**-**.....

Пользователей в системе около касаря - тех кто реально пользуются сервисом. У одного пользователя как правила одно устройство, но есть несколько сотен пользователей у который сотни устройств и несколько пользователей с ~1к устройств. Эта жопа.

Я несколько минут выждал, что б ноги не так тряслись и пошел к куратору своему. Один из клиентов мне уже написал, что что то не работает. Я дошел и сдался. Ему уже на телефон звонят.

Всем отделом пытались найти выход из ситуации. Бекапов нет.

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

Люди же реально добавляли эти вот все устройства, руками, проходя все процедуры добавления. Это так то много труда...
Охуели все. А больше наверное исполнители клиентов наших и я. Ну и мой куратор наверное.

Хз как меня после такого залета не выперли.

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

А еще я усвоил урок, что человеческий фактор - это пздц опасная штука. Ведь тут не кто то, а я сам, на ровном месте, наделал такой хуйни за одно мгновение.

Показать полностью 2
[моё] Личный опыт IT IT юмор Программирование Программист Web Мат Длиннопост
6
434
Eye.Providence
Eye.Providence
Не топовый автор
Серия Почему нельзя шутить на работе
1 месяц назад

На работе нельзя шутить 3⁠⁠

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

И вот что, это всегда было как выстрел себе в ногу.

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

UDP. Я пишу истории которым с десяток лет. Когда происходили эти момент - я был начинающим программистом. В данном посте, это была компания, где работал единственный веб разработчик - это я. Мне говорили что сделать, я делал. В код мне никто не лез.

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

Данный пост, будет продолжением серии постов и при этом не совсем про шутки на работе. Думаю будет интересно. Учитывая, что в предыдущих постах многие писали, что я пишу не сам, а нейронки. Что не программист. Что в жизни так не бывает, и прочее. Ну вот буду поджигать чьи то жопы дальше =) Опишу предысторию и как я устроился на первую работу и про первый свой проект на ней.

В универе, примерно на 2 курсе я понял, что если и дальше буду ничего не делать то, и универ закончится, а я буду никем . Начал активно прогать. Все что надо было прогать, делал сам. Мы часто делали разделение труда, я прогаю, а кто то например мне объясняет, что прогать, например математику, или например оформляет все сделанное, так я прогал еще и за других людей.

Так же в универе я вел достаточно активный образ жизни, делал какие то стартапы, проходил какие то курсы, посещал какие то конференции. Любил повыебываться. Например была ситуация, когда заведующий одной из кафедр, рассказывал какие они там у себя крутые штуки делаю, какая у него там офигенная команда студентов, какую крутую штуку делают они. После того как я повыебывался, он ясно дал понять, что я никто, звать никак и про то что ток языком трепать умею. Мы с одногруппником взял его на понт, за одну ночь сделали, то что его команда делала год) Его глаза охуения я никогда не забуду) Очень выгодная сделка, автоматы за одну ночь труда.

Заканчивая универ, я был тем самым чуваком, которому пишут если что то нужно сделать, тот самый чувак которого всем рекомендуют. Так что закончив универ, у меня было много мелкой работы фриланса, чем я был занят первые полгода после учебы. Из всего этого выделялся более менее крупный проект. Старт ап, сервис поиска дешёвых продуктов в магазинах. По сути карта, на карте магазины, каталог товаров. Админка ко всему этому. Я там на говнякал бек на чистом php. Морду jquery. Боль. Не суть.

Мне не нравился такой ритм жизни фрилансера. То кинут на деньги, то не кинут, то на жалость надавят. Сидишь дома. Домашние смотрят как на бездельника. Какие то дни правда усердно пашешь. Какие то прокрастинируешь. Так я 1к часов в кс го накатал. Ну типа просыпаешься, все на работе, пока пожрал, поссал, все пришли, отвлекают. Потом пытаешься работать, какие то созвоны. Потом кс. Вот сейчас последнюю катку. Теперь точно последнюю. Все проснулись. Ушли. Так пару часиков поработал и по кругу. Ну примерно как то так. Какие то месяца очень денежные, какие то лапу сосешь. Гребанные качели 70к, 0к, 5к, 150к и тд. Так еще и общения копец как не хватает. Уезжал в город, брал ноут и работал из какой то кафешки, что б крыша не поехала.

В пизду думаю. Сделал резюмеху. Выложил.

Ну меня сразу и позвали на собес в ту, мою первую компанию. Увидели карту с точками - ну всё, типа нам надо примерно то же самое. Пришел на собес, поговорили о жизни, с моим будущим куратором и ген диром. Ген дир, по-доброму посмеялся над моей фразой "Хочу в коллектив".

Ген дир: "Вот проект обсудили, сделаешь?"

Я: "Сделаю".

ГД: "За сколько"

Я: "За 2 недели".

ГД: "Выходи завтра на работу".

За 2 недели я это все сделал. Охуел. Но сделал. Не плохая бд получилось, mysql. Бек на голом php, один класс XD(Ну не понимал я как это вот ООП делать, а хотелось). Фронт все так же на jquery. Вот, чтоб было хоть чуть чуть понятно, о масштабе пиздеца... На фронте нажимают кнопочку, ajax запрос на бек, бек возвращает кусок js кода, который уже хуярится в невидимую div ку, где собственно и исполняется..... if в if а в нем свитч кейс а в нем еще if....

В код слава богам, никто не смотрел. Но все это работало и всем нравилось. Спустя две недели, когда все получали аванс, я получил первую зп, целую зп(а я проработал всего две недели). Оказалось, мне подняли зп почти X2. Меня это прям воодушевило на будущие подвиги.

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

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

Утром пришел на работу, стояла коробка с маком=)

Все исправил. Исправил все замечания дизайнера. Новая проблема. Шрифты на мониторах не видно, на маке видно. Дизайнер поправил. Не важно. Сдал проект.

Приходили новые хотелки на будущие релизы. Работали дорабатывали. Меня дико бесил тот их зелёный основной цвет. Каждый день я на него смотрел и меня блювать тянуло, а нужно было еще и сервис этот допиливать. И тогда я сделал несколько цветовых схем которые переключались по нажатиям горячих клавиш. У меня была золотая/цыганская тема, розовая, черная/брутальная. Получилось очень здорово. Заказчик подглядел у меня на компе как выглядит и задался вопросом, что это, я объяснил. Ему понравилось. Пришлось мне допиливать нормально эту фичу для заказчика=)

Я вынес урок - не делай лишнего, иначе работы прибавиться.

Наша, компания захотела такой же сервис себе. Начали делать клон. Я был начинающий программист и мне было как то неловко просить сервак, арендовал сам. Было неловко просить денег на домен и взял бесплатный домен *.tk. Там и наделали супер пупер крутую версию сервиса для своей компании. Вот раздали доступы клиентом. С пол года все пользуются. Домен я продлеваю, когда надо. Бац. Клиент пишет. Захожу по выданному адресу на презентации, а там веб кам. Оказалось что эти домены могут так просто взять и отобрать регистратор =(

Так я пришел к тому что нельзя пользоваться доменами tk и прочими бесплатными. И для компании аренда сервака копейки и домен, купить не проблема. А под каждый новый сервис можно делать поддомен =)))

PS. Вот эти вот клоны сервисов которые я наделал(про которые писал в этом посте). Внутри выглядели отвратительно. Разобраться в исходниках мог только я. Но они были написаны одним мной, джуном, очень быстро, очень дешево. Работают по сей день, меня уже там много лет нет. Все работает и не падает. На момент ухода из компании, там было несколько сотен тысяч устройств и около косаря активных пользователей. А сервак на котором это все крутится что то типа 2 гига оперативы и 1 проц. Ну какой то минимальный. Можно меня пидорасить за то что я такое говно клепал - но оно работает и с удовольствием этим пользуются. Я вижу что у конкурентов сервисы работают хуже, а мои решения и фичи, они повторяют. Реально можно делать проекты без полноценной команды - пм, тимлил, тестировщик, аналитик, маркетолог, таролог, астролог и тд. Можно делать в одного. НО у этого всего будут последствия и минусы. И иногда очень очень болезненные. Возможно я еще о них попишу в этой рубрике.

Показать полностью
[моё] Личный опыт IT IT юмор Программист Фриланс Программирование Web Мат Текст Длиннопост Говнокодинг
75
0
Eye.Providence
Eye.Providence
1 месяц назад
Серия Почему нельзя шутить на работе

На работе нельзя шутить⁠⁠

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

И вот что, это всегда было как выстрел себе в ногу.

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

Например как то раз я делал доработку сайта компании. На сервачке отдельном я развернул клон основного сайта и приступил к работе.

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

Настал момент накидать тестовой информации, что б вообще понять работает нет и то это что хотелось или нет.

Ну я накидал шуточного текста, накидал шуточных картинок. В решении указал, вам понадобятся "устройство 1", "Платформа Z", "Что то там", "Горе ребята". На горе ребята, я конечно же поставил ссылку на сайт реальных партнеров/заказчиков компании. Ну че, получилось смешно. Все работает. Тим лиду показал - оценил юмор, отделом посмеялись. Забыли.

Как то прихожу на работу. Наш коммерческий директор говорит -"Ну пиздец. Я тебя выгораживал как мог. До ген дира постараюсь, что б не дошло, но ничего не обещаю". Суть в том что на сайте партнеров была яндекс метрика. Ну и понятно они пошли смотреть откуда переход и наткнулись на это вот все. Итог: "Нашим партнером сказали, что меня уволили", я еще несколько лет с ними не взаимодействовал, пока вся история не забылась.

После этой истории я всегда, делаю хотя бы базовую авторизацию =)

[моё] Программирование Юмор Web IT юмор Программист Сайт Истории из жизни Мат Текст IT
7
2
mars.frontier
mars.frontier
1 месяц назад

Как мы делали мини-игру про ровер на Марсе внутри Telegram WebApp⁠⁠

«Хочется сделать простую карту, чтобы листать её в Telegram». С этого всё и началось. А закончилось — изометрическим движком, авторизацией по WebApp, системой энергии, покупкой участков и боевым ровером с шестью колёсами.

1/3

🚀 С чего всё началось?

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

В целом, даже эта идея была вполне рабочей и первые 300 пользователей с разных источников легко собрались. Мы даже провели на 9 мая конкурс "найди звезду победы" и выплатили победителю небольшой приз :)

Но само собой, что бот - не предел мечтаний, нужно было пилить полноценный мини-апп.

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

Первый шаг в сторону мини-аппки - сделали вебстраничку, где можно было листать мышкой или пальцем — просто ради визуализации. Прямоугольная сетка, тайлы, немного стилей. Telegram WebApp проглатывал HTML5 на ура. Тогда не было никакой логики, просто подгрузка текстур и картинка под пальцем.

Вот как это выглядело:

  • Пользователь заходил и видел карту Марса.

  • Никакого взаимодействия — только “глянуть”.

🎮 А потом захотелось интерактивности

Следующим шагом стало добавление изометрии — чтобы выглядело как псевдо-3D. Самое интересное, что даже не потребовалось изменять текстуры. Серьезно :) Они по-прежнему те же самые, квадратные, 64 х 64. И не используется никакой 3д - движок.

вот краткое и понятное объяснение, как строится изометрическая карта из квадратных тайлов:


🧠 Основная идея:

Каждый квадратный тайл поворачивается на 45° и масштабируется по вертикали, чтобы получился ромб (изометрическая проекция). Вместо привычной сетки (x, y) мы рассчитываем экранные координаты (left, top) по формуле:


📐 Формулы для отображения:

При размере одного тайла T:

  • W = T * sqrt(2) — изометрическая ширина (диагональ квадрата).

  • H = W / 2 — изометрическая высота (высота ромба).

  • WX2 = W / 2, HX2 = H / 2 — половинки для смещения от центра.

Переход от логических координат (dx, dy) к пиксельным:

isoX = (dx - dy) * WX2 + centerX; isoY = (dx + dy) * HX2 + centerY;


🧩 Что это даёт:

  • (dx - dy) — смещает тайл по горизонтали.

  • (dx + dy) — смещает тайл по вертикали.

  • centerX, centerY — центр экрана, чтобы карта строилась относительно игрока.


🎯 В результате:

  • Из обычной квадратной сетки (x, y) формируется ромбовидная карта, где видны и горизонтальные, и вертикальные соседние тайлы.

  • Центральная клетка (текущий игрок) — всегда по центру, а остальные располагаются вокруг.

    Ну а дальше уже дело техники - придумали алгоритм перемещения в 8 направлениях: вверх, вниз, влево, вправо, плюс диагонали.

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

    Задали запреты на воду, скалы и занятую клетку, чтобы не было “читов”.

🔐 Само собой - авторизация

Чтобы пользователь не “прыгал” по чужим роверам и участкам, мы внедрили Telegram WebApp InitData (это такая строка с хешем, которую фронт передает нам в бэк, а мы - уже на сервере телеграм с токеном бота валидируем подпись. Если сошлась - то пользователь зашел к нам через телегу. Если нет - скорее всего он просто открыл веб-страницу как сайт, или что-то пытается поломать, подделать :)

Если кратко:

  • Telegram сам отдаёт токен с подписью.

  • Мы проверяем подпись на бэке по HMAC SHA256.

  • Получаем ID пользователя, сохраняем его в сессии.

Теперь всё честно: ровер – только твой, кристаллы – только твои.

🪐 Стало красивее: добавили кристаллы и рамки

Потом появились:

  • Кристаллы на клетках — можно собирать.

  • Подсветка клеток: белая рамка — твоя, красная — чужая.

  • Имена владельцев, чтобы было видно, кто что захватил.

    В планах: Покупка участков за кристаллы. Это было в текстовом боте. И ползая по карте, даже видны купленные тобой (белым) и оппонентами (красным) участки.

⚡️ Оптимизация и загрузка ассетов

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

  • Добавили прелоадер, который подгружает PNG-шки перед игрой.

  • Сделали показ спиннера на любом действии (движение, загрузка).

  • Кэшируем тайлы и обновляем только при движении.

🤖 Как выглядит сейчас

Игрок:

  • Заходит в Telegram Mini App.

  • Авторизуется за доли секунды.

  • Видит изометрическую карту с ровером, кристаллами, участками, рекламными баннерами.

  • Может двигаться по клеткам, собирать кристаллы (в будущем - бурить и находить ресурсы, торговать ими, покупать землю).

А мы — всё это рисуем прямо в DOM.
Никаких Canvas, WebGL, или тяжелых движков. Только HTML, CSS и немного магии на JS.


💬 Если интересно — покажу, как это выглядит вживую.
Тестить можно тут. А если зайдёт — добавим NFT, фермы и квесты на выживание 😄

Показать полностью 3
[моё] Gamedev Разработка Программирование Telegram Javascript Python Unity Frontend Backend Web Web-программирование Ton HTML CSS Верстка Длиннопост
9
140
user5270234
user5270234
1 месяц назад

Я сделал веб-игру про рисование песком с 200 000 физических песчинок⁠⁠

Игра в браузере: https://alexander-dudarev.itch.io/sand-art

Sand Art – это симулятор творческой физической песочницы, в которой я постарался сделать реалистичное моделирование до 200 000 частиц песка.

Я использовал технологии WebGL и пытался создать интуитивно понятное управление, чтобы создать увлекательный творческий процесс.

1/4

Ключевые функции:

- Реалистичная физика песка с 200 000 динамическими частицами, создающими впечатление подлинного песка.

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

- Оптимизированный рендеринг WebGL для обеспечения бесперебойной работы на всех устройствах.

- Набор инструментов для творчества. Разнообразные инструменты взаимодействия, позволяющие манипулировать вашим песочным творением. Художественная настройка 7 уникальных форм кисти для разнообразного художественного выражения. Регулируемые размеры кистей для создания мелких деталей или широких мазков. Полная цветовая гамма для создания ярких разноцветных композиций.

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

Буду рад получить фидбэк. Что улучшить, чего добавить?

Показать полностью 4
[моё] Игры Компьютерные игры Видеоигра Веб-разработка Мобильные игры Приложение Рисование Процесс рисования 2D HTML Javascript Web Программирование Программист Программа Песок Творчество Креатив Видео Без звука Короткие видео
28
5
itstorytelling
itstorytelling
2 месяца назад
Лига программистов

4.04 - World Webmasters Dаy [вехи_истории]⁠⁠

4.04 - World Webmasters Dаy [вехи_истории] Технологии, Сайт, IT, Программирование, Программист, Веб-разработка, Web, Error 404, Веб-дизайн

🗓 4.04 - World Webmasters Dаy [вехи_истории]

4 апреля отмечается День веб-мастера (World Webmasters Day) – праздник всех, кто разрабатывает, поддерживает и совершенствует сайты. Веб-мастера — это программисты, дизайнеры, SEO-специалисты, администраторы и многие другие профессионалы.

Выбор даты не случаен: 4.04 ассоциируется с известной ошибкой 404 «Страница не найдена». Это своеобразный символ работы веб-мастеров, ведь их задача — следить, чтобы сайты всегда работали гладко и без сбоев, но не всегда получается)

С момента появления первых веб-страниц интернет сильно изменился. Если раньше веб-разработчик отвечал за всё — от написания кода до оформления, то сегодня сфера веб-разработки включает UX/UI-дизайн, поисковую оптимизацию, маркетинг и кибербезопасность.

🩵 Поздравляю всех веб-разработчиков. Пусть ваши сайты падают реже)

YouTube | RuTube | Telegram | Pikabu

Показать полностью
[моё] Технологии Сайт IT Программирование Программист Веб-разработка Web Error 404 Веб-дизайн
0
Вопрос из ленты «Эксперты»
tablepedia
4 месяца назад
Web-технологии

Генерация HTML файлов с помощью Excel и бесплатного OpenOffice Calc⁠⁠

Я в феврале 2025 года работаю над проектом "Генерация HTML файлов с помощью табличного редактора". Напишите, пожалуйста, в комментариях ссылки на похожие проекты. Точнее, на файл табличного редактора для генерации HTML.

[моё] Вопрос Спроси Пикабу Программа Программирование Microsoft Excel HTML Основы HTML Windows Файл Генерация Таблица Сайт IT Web Web-программирование Приложение CSS Дизайн Веб-дизайн Графический дизайн Короткопост Текст
14
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии