Minecraft на Unity3D — всё по этой теме для программистов

Minecraft на Unity3D — всё по этой теме для программистов

Сразу скажу об одной спорной особенности моей демки.
Не знаю как в других реализациях этой игры, но у меня нет одного массива блоков для всей карты. А в каждом чанке храниться кусочек карты.
Плюсы:
Не нужно следить за двумя массивами(блоков и чанков), а работать лишь с массивом чанковов, а массив блоков автоматически создастся в чанке.
При увеличении карты не нужно будет пересоздавать огромный массив блоков, а лишь массив чанков, который в 16 раз меньше.
Не нужно тратить кучу памяти на этот массив блоков, если большинство его чанков будят абсолютно пусты.
Минусы:
Пройтись по такой карте стало немного сложнее, хотя это не сильно надо.
Для оптимизации блоки строятся только те, что не имеют всех шести соседей(т.е. могут быть видны) или являются крайними в чанке. Если была бы полная карта, то блоки были крайними на карте, а не в своем чанке. Т.е. из-за этого строится много лишних блоков. На видно это видно с 1:55. Попробую брать соседние чанки и с ними проверять, но это замедлит процесс проверки видимости крайних блоков чанка.
Не знаю как лучше сделать.

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

И удаление\добавление блоков работает не быстро. Но мне кажется это тормозит из-за поисков соседей у блоков. Можно как-то проверить наличие всех соседей у блока не проверяя каждого соседа у каждого блока?

WISHMASTER35
Посмотреть профиль
Найти ещё сообщения от WISHMASTER35
Эти 6 пользователя(ей) сказали Спасибо WISHMASTER35 за это полезное сообщение:
11.05.2012, 19:23 #2
Эти 20 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:

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

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

MineCraft

Помочь проэкту

ПОМОГИТЕ НАШЕМУ ПРОЕКТУ, МЫ БУДЕМ РАДЫ, ЛЮБОЙ ВАШЕЙ ПОМОЩИ!

27.05.2012, 15:12 #3
WebMoney
Yandex Деньги
WMR — R402086817307
WMU — U873652601085
WMZ — Z102580587906
Yandex — 410012450394779

Понравился материал? Расскажи о нем другим.

  • Комментарии (54 шт.)

Вот из-за таких жлобов как Whitetiger_ прогресс и стоить на месте!

Коротко о главном:
В файле FPSInputController можно закомментировать строки
==========================================
var stat : Status = GetComponent(Status);
if(stat.freeze) <
motor.inputMoveDirection = Vector3(0,0,0);
return;
=========================================
. таким вот образом
/*var stat : Status = GetComponent(Status);
if(stat.freeze) <
motor.inputMoveDirection = Vector3(0,0,0);
return;*/
, так как этот участок отвечает за паузы если я правильно понял, сильно вреда он не нанесёт.

Все для Unity3d ©2013-2020

Администрация Сайта не несет никакой ответственности за доступность этих ресурсов и их содержимое. Хостинг от uCoz

Minecraft на Unity3D — всё по этой теме для программистов

This repository is no longer maintained. Please see theWildSushii’s fork.

  1. Clone using git
  2. Open up Unity
  3. Choose File > Open Project
  4. Click Other Project
  5. Navigate to your downloaded repository
  6. Modify to your liking!
  • W: Move Forward
  • A: Move Left
  • S: Move Backward
  • D: Move Right
  • Mouse: Camera Control
  • Right Click: Place Block
  • Left Click: Break Block
  • M >

Changelog: First Release (0.1)

  • Walking animation is REALLY weird. We’d appreciate anyone’s help with fixing that!
  • Slight lag on chunk load.
  • Block glitching.
  • Some world generation bugs, not too noticeable.

Q: When Will This Come Out. A: Out now.

Q: Is this going to be an exact clone? A: Maybe. Our plans may change as time goes on!

Q: Can I help? A: Yes! We need coders to help us with bugs or adding new things.

Q: Where can I get help? A: www.mineinunity.tk

Q: I don’t now what a Unity is. can I still play? A: No. This is a dev release, so only devs can use it. Once we mature, public releases will be added.

Как создать простую 2D-игру на Unity

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

Unity — это движок для создания игр в 2D и 3D. Он позволяет в несколько раз ускорить разработку, потому что берет на себя огромную часть задач программиста:

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

  • Outlast;
  • Hearthstone;
  • Cuphead;
  • Rust;
  • Firewatch;
  • Inside;
  • Cities: Skylines и другие.

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

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

Как установить Unity

Скачать Unity можно на официальном сайте. Новичкам будет достаточно бесплатного тарифа “Personal”.

Важный момент! Последняя версия движка, которую предлагается скачать по умолчанию, может не поддерживаться на старых компьютерах; подходящую под возможности вашего компьютера версию стоит поискать в архиве версий. Игра для этой статьи написана на Unity 5.5.0f3. Интерфейс более поздних версий не сильно менялся, поэтому это руководство подойдет и для них.

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

Запустите установщик и следуйте инструкциям. Кроме самого движка, вам предложат установить Microsoft Visual Studio — интегрированную среду разработки. Она предоставляет лучшие возможности по работе со скриптами в Unity, но занимает много места на диске.

Если она уже установлена или если используется другой редактор кода, уберите галочку. Альтернативами могут быть Microsoft Visual Studio Code (более легкая версия Visual Studio) или MonoDevelop — встроенный редактор Unity.

Когда установка завершится, пора приступать к разработке своей первой игры.

Как создать проект в Unity

Для начала запустите Unity и нажмите кнопку New или New project.

Советы новичкам Unity (разработка игр)

Все ниже описанное является моим личным опытом геймдева и осваивания движка Unity и не обязательно к применению. Однако вполне может стать своего рода Best Practice для новичков (а может и другим пригодится).

Метод Update показан чуть ли не во всех официальных уроках по Unity. Однако в скором времени вы поймете, что не стоит пихать его во все скрипты. Альтернативой является применение необходимых изменений путем вызова их из другого объекта (сценария) по событию.

Пример: чтобы обновлять полоску жизни персонажа, не обязательно на слайдер вешать Update() который будет постоянно брать нужное ему значение и присваивать слайдеру. Достаточно вызвать событие изменения жизней персонажа которое и изменит полоску жизни.

Почему так: если у вас будет 1 монетка которая в методе Update() проверяет не подобрали ли ее, то посмотрите на производительность игры если у вас на экране будет 1000 таких монет. Про большое количество объектов расскажу ниже.

2) Стандартные ассеты

Смело импортируйте в свой проект стандартные ассеты и шерстите их. Там очень много всего полезного. Вот почему:

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

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

Другая история касательно этого же – перерыл весь интернет и написал свой контролер для камеры. Камера следовала за персонажем, но плавно, и не двигалась в случае небольших движений игрока или его прыжков, а также не выходила за рамки уровня. А потом нашел скрипт в стандартных ассетах который делал тоже самое… (CameraFollow)

Частицы — это не только дым, взрывы, мех и один, а то и два килограмма диетического мяса 🙂

В некоторых уроках я видел, как пули/ракеты/фаерболы делали путем инициализации (клонирования из префаба) объекта, который сам по себе двигался.

Т.е. на деле это так: GameObject игрока генерирует другие GameObject’ы которые имеют свой коллайдер и кучу скриптов на них. А теперь представьте сколько GameObject’ов будет у вас если игрок будет стрелять этими ракетами из пулемета? В общем заменяйте по возможности любые подобные объекты на частицы (а если вы стреляете – то лучше RayCast’ы). В версии Unity 5.3.1 (вроде бы) появились 2D коллизии частиц.

Вопросы для собеседования Unity3d программиста

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

Немного информации про эти вопросы: Я как unity3d программист довольно часто бываю на собеседованиях, а иногда их и провожу, поэтому какие-то вопросы я отметил как хорошие и сгруппировал в этот список. Он, конечно же, не претендует на полноту, академичность и я буду очень рад если вы что-то добавите или поправите в комментариях.

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

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

Общие вопросы

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

  • Какие книги по программированию вы читали? Какая из них — любимая? Какая больше всего чему-то научила?
  • Владеете ли вы методом слепой печати?
  • Чем принципиально отличается фреймворк от библиотеки?
  • Что такое инкапсуляция? Какие еще принципы ООП вы знаете? Что такое SOLID, расскажите о принципах.
  • Объясните школьнику что такое графическая библиотека (OpenGL, DirectX), в метафорах, так, чтобы он понял.

Алгоритмы и структуры данных

  • Каким образом отрицательные числа представляются в памяти компьютера? Как из положительного числа получить отрицательное в таком случае? А как обратно?
  • Как получить ближайшую сверху к числу степень двойки?
  • На компьютере массив чисел из 100 элементов сортируется за одну секунду, за сколько секунд отсортируется массив из 100 000 элементов?
  • Что такое “время работы алгоритма”?
  • Зачем “балансируют” дерево?
  • Что такое динамическое программирование? Какие задачи оно решает? Приведите пример.
  • Какие вы знаете способы представления графа?
  • Какой алгоритм используется для нахождения пути?
  • У вас есть односвязный список и указатель на один из его элементов (не последний), как удалить этот элемент из списка, оставив список целостным? Возможно ли решение за О(1)?

Что делает эта функция?

Что делает следующий код?

В случае беззнакового, целочисленного n

  • Даны три числа: a, b, c. Как определить за максимум два сравнения существует ли треугольник со сторонами длиной a, b и с?
  • Определить является ли беззнаковое целое число (unsigned int) степенью двойки? (написать функцию.время работы О(1))
  • Есть односвязный список — постройте перевернутый (обратный) список из данного. Последний элемент указывает на предпоследний, …, второй указывает на первый.
  • Графика/3D математика/Rendering pipeline

    В программировании игр графика это главный инструмент взаимодействия с игроком. «Art is a king»,- говорят в игровых студиях.
    Я считаю, что игровой программист должен иметь какое-то представление о том, как устроен графический pipeline и быть хоть немного знакомым с 3d математикой.

    • Что такое lerp? Напишите lerp для float.
    • Что такое dot-product, cross-product векторов? Геометрический смысл этих операций.
    • Расскажите про графический пайплайн, какие системы координат используются на этапах, какие преобразования осуществляются? Что такое drawcall?
    • Какие способы представления ориентации объекта в пространстве вы знаете? Чем хороши кватернионы?
    • Почему slerp работает по кратчайшей дуге?
    • Какие модели освещения вы знаете? Расскажите о принципе работы какой-нибудь из них
    • Когда GPU делает sample текстуры каким образом выбирается mipmap-уровень?
    • Какие данные в себе хранит меш?
    • Для чего нужны нормали? Как нормали преобразуются из одной системы координат в другую (например из локальных координат в мировые, координаты камеры)? Почему таким образом?
    • Есть два вектора — a, b (не ортогональные). Необходимо получить вектор ортогональный плоскости образованной векторами a и b
    • Есть два вектора — a, b (не ортогональные). Необходимо получить вектор ортогональный a или b в плоскости образованной этими векторами
    • Каким образом по вектору нормали и вектору света определить вектор отраженного света?
    • Напишите матрицу поворота вокруг любой из оси

    ТЗ для программиста Unity3D

    Каким должно быть идеальное ТЗ для программиста Юнити? Достаточно ли одного общего ДизДока? Как помочь начинающим геймдизайнерам составить грамотно ДизДок и ТЗ для программиста? Вот на эти вопросы я и постараюсь ответить в этой статье.

    пока в разработке. постепенно дополняется.

    Каким должно быть идеальное ТЗ для программиста Юнити? Достаточно ли одного общего ДизДока? Как помочь начинающим геймдизайнерам составить грамотно ДизДок и ТЗ для программиста? Вот на эти вопросы я и постараюсь ответить в этой статье.

    1. Общие положения.

    1.1. Жанр и целевые платформы.

    Здесь укажите:
    — жанр игры (арканоид, платформер, стратегия, РПГ, ФПС, и т.д. и т.п.) ,
    — вид игры 2D или 3D, изометрия, ромбическая, или гексо, вид сверху и т.п..
    — мультиплей, онлайн или сингл.
    — целевые платформы, например — Windows, Android, IOS и т.п.

    1.2. Маркетинг, прототипы, особенности по новизне.

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

    1.3. Формат экрана.

    Здесь нужно определиться с базовым соотношением сторон экрана (aspect ratio) и базовым разрешением экрана, под который будут рисоваться все текстуры, фоны, элементы GUI и т.п. Обычно базовый экран берется самый широкоформатный (16:9) и самый большой по разрешению (пикселям), например Full HD — 1920:1080.
    Далее надо описать как будет адаптироваться картинка с камеры для экранов с другим соотношением сторон. Обычно для более узких экранов, например 4:3, основная картинка (фон, объекты в игре) обрезаются по ширине, а элементы GUI пропорционально сужаются (масштабируются по ширине).

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

    План описания сцены:

    2.1 Название сцены (Английское название).

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

    2.1.2 Объекты на сцене
    Здесь описываются все объекты на общем виде сцены, помеченные цифрами. Объекты описываются в следующем порядке:

    2.1.2.1 Название объекта (Английское название)
    — ссылка на папку, где лежит файл объекта (png или obj и т.п.);
    — ссылка на пункт 3 этого ТЗ, где этот объект описывается отдельно еще раз;
    — картинка, изображение этого объекта;
    — свойства объекта, т.е. его количественные (сила, здоровье, скорость, масса) и строковые (имя, название) характеристики;
    — вкратце описывается механика объекта, что он делает и как ведет себя на сцене.

    2.1.3 Алгоритмы и механика сцены
    Здесь необходимо описать общий алгоритм работы сцены. С чего она начинается, как развивается действие на сцене, как ведут себя объекты на сцене, чем и когда заканчивается сцена. На какие сцены она переходит по окончании.

    Следующий большой раздел, который необходим в ТЗ это Объекты игры:

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

    4. Дополнительные требования

    4.1 Сторы, маркеты.
    Торговые площадки на которых планируется продавать и/или распространять игру. Это требует внедрение дополнительного кода, соответствующего требованиям этих маркетов по играм. Как правило тут используются дополнительные плагины для Юнити, которые могут быть платными.

    4.2 Монетизация.
    За счет чего ваша игра будет приносить вам доход. Либо она будет продаваться за деньги, либо будет бесплатна, но будет содержать в себе встроенную рекламу, которая будет давать отчисления. Как правило тут тоже используются дополнительные плагины для Юнити, которые обычно бесплатные. Но проггер должен и тут попотеть, чтобы разобраться и грамотно встроить код.

    4.3 Социалка.
    Как известно всем скучно играть в одиночку. Игра может иметь выход в социальные сети, пиарить игроков на стенках. Вести статистику достижений, лидерборды и т.п. Как правило тут тоже используются дополнительные плагины для Юнити, которые обычно бесплатные. Но проггер должен, черт возьми, и тут попотеть, чтобы разобраться и грамотно встроить и отладить код.

    Примечание. Все эти дополнительные требования часто по трудоемкости составляют 50% от всей игры.

    5. Сетевое взаимодействие.
    (опционально для онлайн игр)

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

    Студия готового дизайна GS studio

    Login

    Привет! Я — Алексей Науменко, .NET Developer в Plarium Kharkiv. Я хочу рассказать о том, как начинал свою карьеру, и посоветовать, с чего разработчику начать изучение Unity.

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

    Как я начал программировать

    Я учился в ХАИ по специальности «Телекоммуникации». У нас был преподаватель, который конструировал беспилотники. Благодаря ему уже на курсе я начал писать простой код на С для микроконтроллеров, которые управляют передачей данных с земли на БПЛА. Тогда я решил, что нужно выучить какой-то актуальный язык программирования, чтобы писать на нём постоянно, а не только для решения узких задач.

    Выбирал я между С# и Java: читал книги по этим языкам, но потом просто открыл Visual Studio и Java IDE и сделал выбор в пользу первого по «обертке». Не самый правильный способ анализа преимуществ и недостатков, но о выборе я не жалею.

    Почему пошел в геймдев и выбрал Unity

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

    После университета я работал в нескольких продуктовых компаниях: год занимался веб-программированием, потом 4 года разрабатывал ПО для call-центров. Но меня всё время преследовала идея попробовать себя в разработке игр. Так что в свободное от работы время я стал думать, какой движок использовать для будущей игры.

    Многие разработчики используют Unity и Unreal Engine, но я хотел изучить все варианты. Поэтому я стал разбираться, на чем написаны популярные проекты. Оказалось, что это либо самописные движки, как, например, у Naughty Dog, либо движки, о которых очень мало информации в интернете — чтобы работать с ними, нужно, скорее всего, некоторое время работать в индустрии и знать хотя бы общие принципы построения игровых движков.

    Я вернулся к выбору между Unity и Unreal Engine. И так как на тот момент я уже 4 года программировал на .NET, выбор был прост: в Unity есть C#, а в Unreal Engine — нет. Еще один плюс Unity: я погуглил некоторые интересные мне вопросы и почти на все из них нашел попытки ответить. Пусть не всегда профессиональные, но информация была, и было с кем ее обсудить.

    У Unity есть аналог StackOverflow — Unity Answers. Там очень просто найти ответы на конкретные вопросы на начальном этапе, поэтому порог входа очень низкий, особенно если человек понимает хотя бы общие принципы программирования.

    С чего начать обучение

    Я изучал уже решенные задачи, похожие на те, что интересовали меня. Однажды я искал конкретное решение, но не нашел его в Asset Store. Поэтому начал мониторить форумы и наткнулся на парня, который делал именно то, что мне было нужно, но в Store его решение не пропустили по каким-то требованиям. Я написал ему сообщение и предложил купить его наработку. Он очень обрадовался возможности подзаработать — это был румынский десятиклассник. Чуть ли не лучшее мое вложение в изучение движка: 10$ плюс столько же за Swift-платеж.

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

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

    За месяц-полтора изучил базу, но не поверхностно, а достаточно предметно — то, что было нужно на тот момент. Сначала возникло очень много вопросов, как и с любой новой технологией. Я смотрел нативный код и читал мануалы, чтобы разобраться, почему что-то работает в Unity именно так, а не иначе. Но, конечно, будет тяжелее и дольше, если нет конкретных задач и ты не понимаешь, зачем это делаешь.

    Нет смысла изучать Unity просто так — стоит начинать с решения конкретных проектных задач. Лучше сразу определиться: «Я хочу сделать Pac-Man». Начинаешь думать, что для этого понадобится: например, нужно реализовать управление персонажем. Желтое существо ест белые точки. Существо должно понимать, что наткнулось на съедобный объект — значит, нужно начать с определения соприкосновения съедобной точки с Пакменом. Тогда появляется конкретная проблема и необходимость искать пути ее решения — а это, по-моему, и есть лучший способ изучения технологии.

    Переход с .NET на Unity на практике

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

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

    Иногда мы собеседуем Senior или Middle+ .NET программистов, которые не знакомы с Unity вообще. При этом человек не переходит на позицию Junior, потому что в Plarium, да и в работе с движком, нет понятия Unity Junior. Если с .NET всё хорошо, освоить движок будет очень просто.

    Что почитать

    Кроме Unity Answers есть еще UnifyWiki. Можно декомпилировать код и посмотреть результат (он не обфусцирован).

    На старте очень пригодились форумы (answers.unity3d.com и forum.unity3d.com). Также я читал книгу Game Engine Architecture Джейсона Грегори. Автор в ней не говорит конкретно о Unity, но подробно рассматривает составные части и особенности игровых движков в целом. Он в деталях описывает, из чего состоит движок, какая математика нужна, как устроен рендеринг. Эта книга расширяет представление о Unity: я начал понимать, что в этом движке есть или должно быть, что с него спрашивать. Единственная трудность — для прочтения этой книги нужно быть очень мотивированным: она не нудная, но достаточно объемная.

    Преимущества работы с Unity

    Большие компании любят Unity за кроссплатформенность. Если ты что-то написал, оно билдится и под iOS, и под Android — пусть и с надстройками, но зато сразу работает без особых плясок. Конечно, если это не касается платежки 🙂

    В нашем случае преимущество также в том, что Plarium — официальный партнер Unity с поддержкой уровня Enterprise Support. Нам не только быстро отвечают на запросы, но и предоставляют больше открытого кода, и мы можем сами что-то вскрыть и допилить.

    Надеюсь, информация будет полезна тем, кто планирует работать с Unity. Успехов!

    Download Unity

    Welcome! You’re here because you want to download Unity, the world’s most popular development platform for creating 2D and 3D multiplatform games and interactive experiences.

    Before you download choose the version of Unity that’s right for you.

    Download Unity Beta

    Get early access to our latest features, and help us improve quality by providing valuable feedback.

    Already a customer?

    Awesome. Download Unity here if you have a Plus or Pro subscription.

    System requirements

    OS: Windows 7 SP1+, 8, 10, 64-bit versions only; Mac OS X 10.11+.

    GPU: Graphics card with DX10 (shader model 4.0) capabilities.

    Цикл уроков “Unity3D Minecraft”

    Для кого они?
    — для тех, кто уже знаком с движком Unity3D и знает все основы

    Чему вы научитесь?
    — многим интересным алгоритмам
    — различным приемам работы с Unity3D
    — создавать аналог Minecraft

    Урок 1. Создание ландшафта

    — Создаем новый проект
    — Создаем Skybox для камеры (Component -> Rendering -> Skybox -> Выбераем “Custom Skybox”)
    — Создаем источник света (Directional Light). Rotation = (45, 45, 0)
    Shadow Type – Soft Shadows
    Resolution – High Resolution
    Bias – 0.15
    — Создаем пустой объект нажатием клавиш Ctrl+Shift+N. Назовем его “landscape”
    — Импортируем package, который называется Character Controller (Assets -> Import Package).
    — Добавляем 3rd Person Controller. Пусть его позиция будет (0, 100, 0). Измените величину Step Offset скрипта Character Controller на 1.0
    — Создаем куб (GameObject -> Create Other -> Cube), создаем материал, добавляем у нему текстуру травы, присваиваем материал кубу
    — Создаем префаб и называем его “cube”. Перетаскиваем наш куб на этот префаб. Теперь он будет синим
    — Создаем новый скрипт, который будет генерировать ландшафт. Назовем его “jsLandscape”. Назначаем его объекту “landscape”.

    Теперь нам следует подумать, как мы будем генерировать ландшафт (выбор алгоритма). Можно будет использовать шум Перлина и его модификации, но для начала можно будет использовать данный алгоритм (http://www.ixbt.com/video/3dterrains-generation.shtml). Ознакомтесь с ним и переходите далее.

    private var _field: GameObject[,,]; // наш ландшафт (является трехмерным массивом)
    private var _height: int[,]; // высота данного места ландшафта
    private var _maxSize: int = 32; // максимальная ширина ландшафта
    private var _maxH: int = 64; // максимальная высота ландшафта
    private var _maxR: int = 16; // максимальный радиус сферы
    private var _spheresCount: int = 16; // количество сфер
    var _prefabCube: GameObject; // префаб куба

    function Start ()
    <
    // Инициализация массивов
    _field = new GameObject[_maxSize, _maxH, _maxSize];
    _height = new int[_maxSize, _maxSize];

    // Создание поля (высота равна 0)

    var i: int;
    var j: int;
    for (i = 0; i 0 && _x>=0 && _z>=0 && _x Примечания:
    — Алгоритм заполнения промежутков можно было бы улучшить, чтобы еще была земная кора, но тогда время запуска увеличится.

    Мастер Йода рекомендует:  5 вещей, которые вы не знали о типах позиционирования CSS
    Добавить комментарий