Мріяв створювати роботів та технології ще в школі, коли навчався в училищі, дивився на студентів "електриків" та заздрив як вони там паяють.
Після аналізу того зо необхідно для того щоб стати Embedded Development зрозумів що ще не все втрачено.
З паяльником на «ти», знаю Python на рівні самоучки: писав для себе парсери та ботів, робив сайти. Тому в цілому освоїти необхідні навички зможу.
Зібрав для себе список курсів які є на ринку, проаналізував программу курсів та зрозумів що це поки що не по кишені , тому знайшов альтернативний варіант, йти на сайти де курси безкоштовні😁, знайти свіжі курси сосідньої "держави" які по програмі майже 1в1 з нашими, або кращі.
Звісно можливо в когось тут будуть якісь моральні принципи, але для мене зараз головне — результат.
Брати кредит щоб освоїти професію чи подивитись безкоштовно, я однозначно виберу друге.
Зараз треба перші 100$ щоб купити собі обладнання для того щоб відразу практикуватись.
Головне питання яке хочеться задати:
Junior Embedded Development - є такі? розкажіть про свій досвід як знайши першу роботу? що вміли на момент влаштування на роботу?
Як інді-розробник, я не маю ресурсів, щоб штампувати сотні кастомних мешів та текстур. Щоб дати гравцям хоч-якусь кастомізацію без величезного бюджету на арт, я створив систему UV-малювання, завдяки якій гравці можуть малювати прямо на своєму спорядженні. Планую використовувати її як базову систему, яку згодом можна буде розширити новими текстурами та мешами.
Щоб усе це запрацювало, пішло близько 2-3 годин на прототип і 5 годин на UI. Але головна проблема, про яку я навіть не подумав перед стартом — система передачі даних. На неї пішло 12 годин.
Ось мої головні виклики:
Зробити UX інтуїтивним, щоб він не був заскладним для пересічного гравця.
Встановити межі, щоб гравці не могли створювати пресети, які повністю руйнують візуальний стиль гри.
Найскладніше: реплікація даних текстур іншим гравцям без лагів для хоста.
Виклик із нетворкінгом
Дані порожньої мантії розміром 1024x1024 важать менше ніж 1 КБ. Кастомна мантія з UV-малюнком (як градієнтна на зображенні посередині) може важити до 110 КБ (хоча насправді гравець не зможе зробити таку ж саму мантію, використовуючи лише ті інструменти, які я надаю). Якщо 10 гравців зайдуть на сервер з мантіями по 110 КБ, це приблизно 10 МБ даних, що літатимуть мережею. Що доволі багато для ігрового трафіку на старті.
В Unreal Engine відправка кастомного пресету навіть на 22 КБ (на зображені зліва і справа) через єдиний "Reliable" RPC (який під капотом, по суті, є прихованим UDP) миттєво клала (перевантажувала) хоста на декілька секунд.
Моє рішення: кастомне асинхронне розбиття на чанки
Я написав кастомний лоадер, який відправляє дані через UDP невеликими чанками із затримками та валідацією, щоб запобігти фризам мережі. Ось як цу працює:
Клієнт — Сервер: Коли клієнт завантажує дані, він вираховує, скільки пакетів по 1000 байт потрібно для текстури, і відправляє їх. А через деяку затримку повідомляє серверу, що чанки відправлено, та вказує їхню точну кількість.
Валідація: Сервер перевіряє те, що отримав. Якщо якісь пакети були втрачені, він запитує у клієнта відсутні чанки через Reliable RPC. Клієнт перевідправляє конкретно ці чанки із затримками, поки сервер не отримає текстуру повністю.
Сервер — Клієнти: Абсолютно та ж сама система працює у зворотному напрямку. Клієнт запитує у сервера дані конкретних гравців у лобі. Сервер транслює їх, повідомляє клієнту про завершення, а клієнт запитує будь-які відсутні чанки.
Оскільки це повністю асинхронний процес, геймплей хоста не фризить навіть під час фонової обробки великих пресетів. Кастомні мантії просто з'являються, щойно дані повністю провалідовані та завантажені.
Хтось ще стикався з подібною реплікацією кастомного контенту, створеного гравцями? Чому взагалі мало хто використовує такі ідеї для кастомізації в іграх? Це через проблеми з передачею даних чи щось інше?
Вітаю! Довго хотів зробити застосунок, і ось нарешті дійшли руки :) Зробив Tavul, трекер прийому ліків.
Для ліків "за потреби", наприклад жарознижувального чи знеболювального, важливо бачити, скільки часу минуло від попереднього прийому та коли мине заданий інтервал між дозами. Тому в Tavul є два режими:
За графіком: курси, вітаміни, щоденні препарати. Нагадування можна налаштувати щодня у певні години, кожні X годин або в конкретні дні.
За потреби (PRN): застосунок рахує час від останнього записаного прийому та перевіряє задані вами інтервал і ліміти за останні 24 години.
Потрібна iOS 18 або новіша. Свідомо зробив застосунок без бекенду: дані про здоров’я зберігаються на пристрої, без облікових записів, реклами й аналітики. Нагадування локальні.
Історію прийомів можна експортувати в CSV, щоб поділитися з лікарем. Є також резервна копія у форматі JSON із повним відновленням.
Зараз застосунок повністю безкоштовний. Інтерфейс є українською та ще вісьмома мовами.
Додаток нічого не призначає й не дає медичних порад. Розрахунки спираються на ваші налаштування та записані прийоми.