Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр «Тайна самоцветов: ключ сокровищ - три в ряд» — это увлекательная онлайн-головоломка в жанре «три в ряд»! Объединяйте драгоценные камни, разгадывайте головоломки и раскрывайте древние тайны, скрытые веками!

Тайна Самоцветов: Ключ Сокровищ - Три в ряд

Казуальные, Три в ряд, Головоломки

Играть

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

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

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

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

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

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

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

Как там изучение C# продвигается?⁠⁠

2 года назад

День 1

Вводный урок с объяснением возможностей языка и порядком установки Visual Studio. Следуя своей гоблинской натуре побежал вперед паровоза и забыл установить компонент для работы с NET.

Посмотрел на интерфейс, понял что пока ни черта не понимаю, помолился Горку и Морку, крикнул WAAAGH и продолжил изучение. Впитал базу про структуру проекта и типы данных, благо данные понятия уже были известны после JavaScript и Python.

День 2

Подробно разобрали типы данных и их обозначение в языке C#. Это конечно весело и круто что их так много, но похоже в ближайшее время будем использовать только int, string и bool. Поигрался с вводом/выводом гоблинских мудростей в консоль и базовыми математическими операциями.

На самом деле надо, а потому продолжаем...

День 3

Познакомился с типами конвертации, в целом удобно. А вот дальше пошел мимо курса изучать самостоятельно операции с if - else и классом Random. В прошлом посте я рассказывал о боевой системе схожей с дуэлями в Crusader Kings и данные операции нужны мне для ее реализации.

День 4

Опираясь на алгоритм, что до этого был испытан на Python, начал писать боевую систему уже на C#, попутно внося коррективы.

На Python ранения просто изменяли итоговые параметры здоровья и доблести (подобнее о системе в прошлом посте). Однако, по задумке ранения будут оставаться и после боя, каждое имеет свой срок заживления.

Для хранения информации о ранениях я создал три массива:

- Текстовое имя ранения

- Штраф доблести

- Штраф к здоровью

И в этом была моя ключевая ошибка... я создал МАССИВЫ, а в них нельзя добавлять больше элементов, чем заданно изначально. Снова поторопился и накосячил потакая своей гоблинской натуре, что поделать. В итоге узнал, что помимо массивов в C# есть списки и стал изучать класс List.

Заменив все три массива на списки я решил проблему и оно запустилось! ХВАЛА ГОРКУ И МОРКУ, WAAAGH!

Итог

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

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

Если тебе интересно наблюдать за развитием новичка в GameDev (или смеяться) - подписывайся на мой блог Goblin Cave!

Показать полностью 2
[моё] Разработка Стратегия Программирование Gamedev Программист Программа Языки программирования Csharp Длиннопост
4
22
afva
afva
Лига программистов

Вопрос к C# .Net разработчикам⁠⁠

2 года назад

Всем привет!
Изучаю язык C#, хочу быть C#/.Net разработчиком. На пути изучения языка столкнулся с проблемой с которой хочу обратиться к более опытным товарищам.

Выучил синтаксис языка, ООП, сейчас изучаю LINQ.
Затем планирую изучить на базовом уровне алгоритмы и структуры данных, Git, SQL, Асинхронное программирование, Паттерны проектирования.
Далее планирую перейти к написанию клиент-серверных десктоп приложений для портфолио, с использованием ASP.NET Core, WPF MVVM.

Столкнулся с проблемой что в вакансиях требования абсолютно разные. Кто то требует просто C#, .Net, WPF, а некоторые работодатели довольно много требований указывают: UWM, Angular, Xamarin, Entity Framework, Asp.Net Web Api, Docker, Typescript, Azure DevOps, KeyCloak и т.д.

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

Хочу быть крепким джуном, который знает большинство базовых инструментов. Чтобы при трудоустройстве было больше шансов. Но вопрос, есть ли такой набор базовых инструментов?)
Извиняюсь за сумбурность мыслей, благодарю за ответы.

Показать полностью
Csharp IT Программирование Программист Текст
35
Gusi.gagaga
Unity

Не работает скрипт для юнити⁠⁠

2 года назад

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

У этого парня код выглядит так:

Мой так:

Видно, что у меня fixedupdate на 11 строке не синего цвета. Подскажите, это из-за этого скрипт не работает и спрайт не двигается? Как можно это исправить? Я читала, по каким причинам скрипт может не работать, а именно: название файла на кириллице, в настройках вижуал студио не стоит галочка на "работа с юнити". Я все это проверила, но скрипт все равно не работает.

Видео, из которого взят код:

Показать полностью 2 1
Unity Csharp Проблема Видео YouTube Длиннопост
12
115
kutejnikov
kutejnikov
Лига Разработчиков Видеоигр

Процедурная генерация простого подземелья в 150 строк (C#)⁠⁠

2 года назад

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

Линк: https://gist.github.com/Kutejnikov/bc89aee11330ae44c27d74c0ba4172fd

Примеры генерации, как настроить канвас и прикрепить скрипт (первая минута): https://www.youtube.com/watch?v=_Vz9FDigioU

В игре есть тропический остров, на котором расположены руины, после обнаружения которых игрок спускается в подземелье состоящее из нескольких этажей (есть опция начать сразу с подземелья). Собственно с помощью кода создаётся основа для каждого этажа (но можно использовать и для создания интерьеров в наземных прямоугольных строениях). Работа алгоритма построения проста - сначала строится горизонтальная или вертикальная стена и в ней отмечается дверь (или несколько), таким образом пространство делится на две части, в каждом из которых происходит последующее разделение на две части и т.д. За основу взят метод построения правильных лабиринтов “Recursive Division”, посмотреть интерактивные примеры (в том числе и для десятка других алгоритмов) и код для ruby можно здесь: http://www.jamisbuck.org/mazes/

Чтобы в подземелье были «комнаты» и возможность нарезать круги добавлено ограничение на минимальный размер комнаты (int roomMinHorizontal, roomMinVertical) и шанс построения дополнительной двери (int extraDoorChance, minLengthForExtraDoor - минимальная длинна стены для дополнительной двери). В коде всего три метода, давайте посмотрим что они выполняют.

CreateDungeon() - главный метод, вызывается по нажатию пробела, строит подземелье и отрисовывает его на спрайте. В начале метода происходит проверка размера карты - по горизонтали и вертикали должны быть только нечётные числа. Затем идёт инициализация двумерного массива int[,] maze в котором и будет храниться карта. Далее - вызов метода разделения начальной пустой области Division(). Отрисовка полученной карты идёт с 39 по 56 строку - создается текстура и спрайт, текстуре присваивается цветовая информация (стены, пол, двери). Этот фрагмент можно использовать для отображения в игре мини-карты.

Division(int startX, int endX, int startY, int endY) - определение как надо разделить переданную область от стартовых координат (int startX, int startY) до конечных (int endX, int endY) на две части. В методе производится проверка габаритов области и если она слишком мала то выходим из метода через return - в этом случае дальнейшие действия в этом прямоугольнике не производятся. Если нет - создаём новую область через CreateRoom().

CreateRoom(bool isHorizontal, int startX, int endX, int startY, int endY) - непосредственно построение стены и дверей в определенной «комнате». isHorizontal - область по горизонтали шире чем по вертикали, т.е. будет ли построена вертикальная или горизонтальная стена. Сделано для того, чтобы комнаты не были слишком растянуты в одном из направлений. Это определяется в предыдущем методе через if (endX - startX > endY - startY), для квадратных комнат используется рандомное расположение стены. После этого проводится стена в массиве maze[verticalWall, i] = 1 (0 - пол, 1 - стена, 2 - дверь), через int doorNumbers определяем количество дверей в ней - как минимум должна быть одна дверь (но вы можете усложнить не добавляя на этом этапе дверей и создав телепорты для несвязанных частей подземелья). Затем вызывается Division() для каждой из двух областей разделённых стеной и происходит дальнейшее деление, пока не останется неразмеченных областей, после чего продолжится выполнение метода CreateDungeon() и будет визуально отрисована карта получившегося подземелья.

Итак, какие есть плюсы и минусы данного алгоритма. Построение комнат элементарно, при этом они все связаны и при дополнительных дверях появляется нелинейность прохождения. Также игровое пространство используется по максимуму, а с получившимися прямоугольниками в дальнейшем легко работать, расставляя в них мобов и дополнительный интерьер. В то же время, простота алгоритма определяет и его недостатки - некоторая однообразность и предсказуемость - в подземелье будет как минимум одна стена идущая от края до края. Более интересных и «пещеристых» подземелий можно добиться с помощью модификации этого алгоритма под названием "Blobby" Recursive Subdivision Algorithm (в ссылке выше примеры идут сразу после Recursive Devision). Однако, для своего проекта решил остановиться на первом варианте, поскольку мне удобнее работать с прямоугольниками, а вот внутри уже них я применял другие алгоритмы для создания самых разнообразных помещений, пещерок и коридоров. Вот примеры того как таким образом можно усложнить подземелье (игрок на карте отмечен зелёным кружочком):

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

Пару слов о рогалике Tzakol in Exile. Разработку веду с 2021 года, планировал опубликовать в прошлом году, но притормозил и отодвинул дату до лучших времён. Сейчас периодически добавляю новый контент и то, что раньше было демоверсией постепенно повышаю до уровня lite - бесплатной версии. В ней есть два режима - с мета-прогрессией и в стиле традиционных рогаликов (доступны за исключением нескольких последний этажей и сражения с финальным боссом). Планирую добавить ещё блиц-режим, который будет представлен в lite-версии полностью. Скачать демо можно в стиме: https://store.steampowered.com/app/1764840/Tzakol_in_Exile/

Если есть вопросы по коду или по игре - пишите в комментариях, постараюсь ответить.

Показать полностью 2
[моё] Gamedev Разработка Unity Компьютерные игры Инди Процедурная генерация Рогалик Roguelike Туториал Инди игра Видеоигра Csharp Программирование Steam Демо Длиннопост
10
14
DELETED
Лига Разработчиков Видеоигр

Эмулятор CHIP8 под названием CHIP8DALE на C# и Unity⁠⁠

2 года назад

Всем привет, хочу представить вам мой эмулятор CHIP8 под названием CHIP8DALE.

Особенности:
- Звук игры и интерфейса
- Настройка громкости звука интерфейса и игры
- Настройка яркости и цвета подсветки
- Настройка скорости эмуляции
- Сохранение настроек для игр (и автоматическая загрузка настроек при запуске игры)
- Возможность вывести информацию по игре в специальную вкладку
Обзор:

Скачать: https://vk.com/topic-75040291_49930902
Также, можете посетить нашу группу по эмуляторам: https://vk.com/rpcs3
ПС поддерживает только игры CHIP8, в дальнейшем, возможно, добавлю поддержку SUPERCHIP.
Спасибо!

Показать полностью
[моё] Эмулятор Эмуляция Своими руками Csharp Unity Unity3D IT Компьютер Игры Компьютерные игры Gamedev Программирование Разработка Инди игра Инди Видео Видео ВК
0
2
grgl1
Unity

Оптимизированная локализация игры на Unity⁠⁠

2 года назад

Здравствуйте! Разрабатываем игрушку на Unity (пошаговая стратегия), используем как статические объекты (которые всегда находятся на сцене), так и создание объектов из префабов. Встал вопрос локализации.

На данный момент система работает следующий образом:

1) Все текстовые значения хранятся в 4 .csv файлах под разные сцены, значения записаны построчно

Оптимизированная локализация игры на Unity

2) Все статические объекты занесены в массив скрипта, контроллер со скриптом есть на каждой сцене

3) При загрузке сцены всем статическим объектам через цикл присваиваются соответствующие значения из текстового файла. Через ReadAllLines в вспомогательный массив заносятся все значения из текстового файла, которые нам нужны и присваиваются значениям текстов.

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

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

Предлагайте свои варианты переделки локализации/ структуры хранения текстов, главное - оптимизированные варианты.

Показать полностью 1
Программирование Разработка Unity Csharp Локализация
7
Аноним
Аноним

Помогите пожалуйста знающие⁠⁠

2 года назад

Я вот игру пытаюсь 2D сделать, и хочу взаимодействовать с дверью (1 спрайт с задним фоном) через E, перерыл все сайты и не нашёл ни один рабочий скрипт для моей версии Unity (2021.3.10f)

Unity2d Csharp Игры Gamedev Текст
5
10
DELETED

Как написать свой первый скрипт для игры Space Engeeners, если никогда не занимался программированием?⁠⁠

2 года назад

Эта статья написана для людей, которые уже знакомы с игрой, а её автор нуб, не имеет понятия о грамотном программировании, да и повествовании и строит в игре летающие бурильные табуретки. =)

Введение.

"Если вы хотите использовать нейросеть для получения помощи в написании кода на C# для Space Engineers, то необходимо учитывать ряд факторов, чтобы задать правильный вопрос нейросети...

Так начинается ответ на этот вопрос, о нейросети ChatGPT. Наверное, вы уже догадались, что речь пойдет о ней, хотя, возможно, вы никогда не слышали о ней. Я не буду вдаваться в подробности о том, что такое нейросеть. В статье речь пойдет о конкретных примерах использования на практике для решения простых или узкоспециализированных задач. Все, конечно, зависит от вашей фантазии и навыков. Я не умею писать на C#, но я немного понимаю Python и работаю с SQL-базами данных, поэтому некоторые операторы (функции работы), например if/else, мне понятны.

Давайте же начнем. Для начала найдем рабочую версию чата. Если у вас есть доступ к оригинальному сайту, вам повезло. Я же попробовал несколько телеграмм-ботов. Вы можете их найти через поисковик или внутри самого Телеграмм по названию. После того как вы нашли подходящую для вас систему, можете попробовать написать запрос. Я начал с такого: "Привет. Что ты знаешь об Space Engeeners?". Бот ответил, что это игра - песочница, и другую информацию из Вики. Мне показалось, что бота нужно постепенно вводить в контекст моего запроса, чтобы он лучше меня понял. Я продолжил и узнал у него о "Программируемом блоке". На что он дал ответ о подобных блоках в реальной жизни для сборки электроники. "Ага, недостаточный контекст" - подумал я. Задал вопрос снова, но написал уже "Programmable block" в Space Engeneers. Бот услужливо ответил, что он знает такой блок, из какой игры, и что код для этого блока пишется на C#. Вот тут я понял, что нащупал что-то интересное."

Основная часть.

Я написал боту: "Напиши пример кода, чтобы вывести текст на дисплей, который имеет в названии D1". Подумав 10-15 секунд, бот ответил. Моему восторгу не было предела, когда я понял, что он не только написал мне готовый код, но и описал его работу.

Скриншот 1.

"Вау! Да это же примитивный "Hello world"! Интересно, заработает ли он в игре. Срочно бежим туда! Ставим программируемый блок, ставим дисплей, даем нужное название дисплею.... Здесь стало ясно, что бот меня понял неверно и он ищет дисплей с названием D1, а не с D1 в названии этого дисплея. Ладно, для первого раза это не проблема. Переименовываем дисплей, включаем отображение текста, затем копируем код в программный блок и запускаем проверку. И... Облом, сплошные ошибки."

Скриншот 2.

"Я уже был расстроен, пока внимательно не прочитал текст: "Обратите внимание, что этот код должен быть помещен в метод Main для выполнения в Programmable Block. Также убедитесь, что у вас есть блок дисплея с именем "D1" на корабле или станции". Так, дисплей есть, а вот Main в тексте кода я не вижу. Пишу боту: "Поместите код выше в метод Main". Снова 5-10 секунд ожидания и ответ был такой:"

Скриншот 3.

"Копируем, запускаем проверку: компиляция завершена успешно. "Ага!" - воскликнул я! Тут же в мою кровь выплеснулся адреналин от азарта. Нажимаю кнопку "Выполнить", и на моем экране D1 появляется заветное "Hello world"."

Скриншот 4.

"Моему восторгу не было предела! Работает, собака! Мысли заметались в голове, и я понял, что бот понимает, как работать с кодом, и знает, как найти конкретный блок именно в игре. То есть он понимает внутреннюю систему. Срочно еще один тест!"

Та часть, где все пошло не по плану.

"Давай найдем... эммм... Все батареи на структуре, на которой установлен программируемый блок, выведем название этих батарей, максимальную емкость, текущую емкость и выведем построчно в дисплей [D1]" - такое задание появилось у меня в голове, но нужно было сформировать это в понятный список целей.

Итак:

1. Найди все блоки батарей на структуре, на которой установлен programmable block.

2. Вычисли максимальную емкость каждого блока батарей в ваттах, текущую емкость в ваттах.

3. Выведи на дисплей [D1] для каждой новой строки: Название каждого блока батареи, его максимальную емкость, его текущую емкость.

4. Обновляй информацию о батареях каждые 5 секунд.

Вот, уже понятнее. Запускаем!

Скриншот 5.

Уже наученный опытом, я вижу что отсутствует метод Main. Указываю боту на ошибку.

Скриншот 6.

Отлично, копируем, вставляем, проверяем на ошибки.

Скриншот 7.

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

Скриншот 8.

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

Скриншот 9.

Опять ошибка, уже другая. Но мы уже знаем что делать! К сожалению я допустил ошибку в слове "type".

Скриншот 10.

Копирую, запускаю и тут заветная надпись: "Компиляция завершена успешно!" УРА! Запускаю выполнение кода, а программируемый блок пишет что код для него слишком сложный.

Скриншот 11.

Тут моя радость перешла в грусть и обиду. Казалось я почти на пороге открытия (для себя). Ничего не работает! Зачем я пишу эту статью? Надо передохнуть.

Та часть, где все снова стало солнечно.

Выпив чаю, да, закусив французской булкой я вернулся к боту и написал: "Привет. Space Engeneers. Programmable block". Бот ответил, что готов мне помочь. Так, запишем что мне нужно, при этом немного поменяю запрос:

Скриншот 12.

Копирую, проверяю опять ошибка! Указываем на ошибку боту и запускаем снова. Компиляция - ОК! Выполнение - ОК!

Скриншот 13.

УРА! ПОБЕДА! Код выполняет функцию! Правда показывает мегаватты, а пишет что ватты. Но тут моя ошибка, ошибся когда, писал задание. Главное - функцию свою выполняет и проверяет самостоятельно наличие новых батарей. Поставил дополнительную батарею (Батарея 4) рядом. Останется только причесать инфу на дисплее, что бы глаз радовался.

Скриншот 14.

Заключение.

Естественно ChatGPT это не панацея. Настоящие знания ничем не заменить, и при создании запроса приходится сталкиваться с глупыми ошибками как при постановке задачи, так и внутри кода. И здесь эти ошибки присутствуют. Плюс нейросеть при любом новом обращении может дать совершенно другой ответ, или попытаться использовать стороннюю библиотеку, что не поддерживается в Space Engeeners. Использовать такой код, написанный нейросетью, в работе, на сложных проектах я бы не советовал. В игре - почему бы и нет. Это закроет минимальные задачи, а может сподвигнет изучать язык самому. Я не кодер, да и строю я откровенные табуретки, но стало интересно, и я загорелся идеей попробовать написать код для игры таким образом. Я уверен что, ваш код будет куда лучше и интереснее, будет выполнять уйму разных полезных и нужных вам функций. Главное правильно ставьте задачу, а лучше учите язык!

Спасибо за внимание, и желаю вам классных приключений в игре!

Показать полностью 14
Программирование ChatGPT Csharp Space Engineers Игры Длиннопост
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии