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

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

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

Играть

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

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

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

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

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

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

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

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

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

Gamedev Разработка Инди Инди игра Игры YouTube Компьютерные игры IT Программист IT юмор Python Картинка с текстом Юмор Все
299 постов сначала свежее
AlivarEnt
AlivarEnt
11 месяцев назад
Программирование на python

Бег с молотом⁠⁠

новая игра от Alivar Entertainment! Это красочный раннер с рандомной генерацией уровня. Пройдите полосу препятствий и покажите свою силу, ударив молотом. Чем сильнее вы ударите и чем больше ваш молот тем больше очков вы наберете!

Релиз: xx.08.24
Платформа: Яндекс игры
Жанр: раннер
Автор: Alivar Entertainment

https://t.me/star45prjct

Показать полностью
[моё] Игры Программирование Unity Gamedev Видео Без звука Вертикальное видео
1
8
Monakez
11 месяцев назад
Лига программистов

Об игрушках unity и android⁠⁠

Делать было нечего, дело было до +30 за окном и появился интерес вернуться к задачке. которая у меня долго пылилась на полке: а именно получить способ забраться во внутренности запущееного нативного приложения на андроид-эмуляторе, который использует libhoudini в качестве транслятора ARM. Для несведующих поясню: есть устройство андроид - оно в основе своей использует процессор ARM архитектуры. есть приложения, которые написаны так, что в конечном счете представляют собой машинный код по эту конкретную архитектуру. при желании что-то сделать с этим приложением необходим какой-то способ управлять этим машинным кодом. чем мы и займемся.

итак, у нас имеется некое приложение. а именно игрушка, скачаная с гугль плей( в процессе ковыряния я пришел к выводу, что это купленый кем-то движок с накручеными на него магазином. звуками и графикой, т.е. игрушек таких - много). у нас имеется понимание, что для "ковыряния" внутри запущенного приложения нам потребуется устройство с root доступом и очевидным решением тут видится эмулятор.

мы знаем, что эмуляторы( memu, bluestacks, nox, genymotion, etc...) запускаются на платформах с базовой архтектурой x86_64, но позволяют исполнять код для архитектуры arm. это достигается за счет исползования intel овской поделки под названием lib(rary)houdini - некий транслятор, встраиваемый в конкретный эмулятор его разработчиками и позволяющий собственно транслировать arm код в x86( как это делается - не знаю, да и код этого транслятора вроде как нигде не опубликован).

мы так же имеем базовые понятия о том, что такое apk, pm, adb, (ba)sh

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

дополнительно к этому у нас есть: текстовый редактор + javascript/python/c и некоторое ПО для отладки и внедрения в приложения. в частности - frida

ну чтож. приступим.

для начала устанавливаем наше приложение себе на эмулятор (я взял genymotion) и запускаем его. оно работает. чтож... теперь нам стоит "найти" его на эмуляторе и скачать к себе на локальную машину для дальнейшего анализа ( adb pull нам в помощь).

конкретно эта игрушка, которую разбирал я шла в split- apk. соответственно выкачиваем все apk файлы и ищем в них что-то относящееся к unity ( а конкретно нас интересуют libunity.so libil2cpp.so global-metadata.dat)

коротко, в двух словах зачем все это нужно:

unity - мета-фреймворк для разработки приложений с последюущим их релизом под различные платфформы. основной инструмент там - c4+ соответственно для "кроссплатформенности" был создан некий транслятор, а именно cSharp->IL(intermediate langauge)->platform. вот этот последний переход осуществляется посредством специальной виртуальной машины(ВМ), разной для каждой платформы и эта ВМ использует различные данные из global-metadata.dat в процессе трансляции IL и его последующего исполнения.

т.к. сам по себе c4+ вполне себе легко подает реверзу, то задача на первоначальном этапе сводится к вытаскиванию этого c4+ кода каким-то образом из IL с целью последующего изучения и выбора направлений дальнейшего анализа.

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

к сожалению( или к счастью) те данные, которые необходимы для работы этого ПО частично или полностью unity-разработчки определенным образом шифруют\обфусцируют. а именно файл global-metadata.dat и наша задача, в случае если il2cpp dumper не сможет корректно отработать будет заключаться в том, чтобы этот global-metadata.dat "восстановить".

на самом сайте il2cppdumper разобраны некие типовые случаи этого "восстановления"

в нашем же все свелось к небольшому анализу(найти место запуска IL virtual machine просмотреть до момента обращения к global-metadata.dat) и copy-paste листинга(анализировал libil2cpp с помощью IDA)

в итоге имеем следующий листинг, который нам любезно предоставила ida

fileHandle2 = (__int64)fileHandle;

fileBuffer = (const void *)utils::MemoryMappedFile::Map(fileHandle);

os::File::Close(fileHandle2, &error);

if ( (_DWORD)error )

{

utils::MemoryMappedFile::Unmap(fileBuffer);

LABEL_21:

fileBufferInMem = 0LL;

goto LABEL_22;

}

size_of_fileBuffer = get_size_of_fileBuffer((unsigned __int64)fileBuffer);

fileBufferInMem = malloc(size_of_fileBuffer);

memcpy(fileBufferInMem, fileBuffer, size_of_fileBuffer);

unXorArray = malloc(64u);

v15 = LoadMetadataFile_Val_1;

v16 = LoadMetadataFile_Val_2;

for ( i = 0LL; i != 64; ++i )

{

v16 = 18000 * (unsigned __int16)v16 + HIWORD(v16);

unXorArray[i] = v16;

v15 = 36969 * (unsigned __int16)v15 + HIWORD(v15);

}

LoadMetadataFile_Val_1 = v15;

LoadMetadataFile_Val_2 = v16;

if ( size_of_fileBuffer >= 1 )

{

bufidx = 0LL;

uXidx = 1;

do

{

uXidxOffset = uXidx + 62;

if ( uXidx - 1 >= 0 )

uXidxOffset = uXidx - 1;

notDone = size_of_fileBuffer <= uXidx;

*((_BYTE *)fileBufferInMem + bufidx) ^= unXorArray[uXidx - 1 - (uXidxOffset & 0xFFFFFFC0)];

bufidx = uXidx++;

}

while ( !notDone );

}

LABEL_22:

if ( (v24 & 1) != 0 )

operator delete(v26);

if ( (v27 & 1) != 0 )

operator delete(v29);

return fileBufferInMem

итак, не обращая внимания на всевозможные страшные буквы и названия переменых - сразу видим(и переименовыываем очевидное) следующее:

мапится файл в память(fileHandle, который указывает на global-metdata.dat)

магия

возвращается fileBufferInMem

вот эта вот магия - это и есть то ,что разработчики конкретной игры пытались выдать за "обфускацию" а именно

xor данных по ключу из генерируемого массива. крайне удобно тем, что a == xor(xor(a,b),b)

т.е. у нас на руках сразу есть ключ и закодированные данные. немного C и

#include <stdio.h>

#include <stdlib.h>

#include <stdint.h>

#include <string.h>

#include <stdlib.h>

#include <stdint.h>

typedef uint64_t QWORD; // DWORD = unsigned 64 bit value

typedef uint32_t DWORD; // DWORD = unsigned 32 bit value

typedef uint16_t WORD; // WORD = unsigned 16 bit value

typedef uint8_t BYTE; // BYTE = unsigned 8 bit value

#define LOWORD(l) ((WORD)(l))

#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))

#define LOBYTE(w) ((BYTE)(w))

#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))

BYTE* readContent(char* filename, size_t* size_t_ptr) {

FILE *f = fopen(filename, "rb");

fseek(f, 0, SEEK_END);

*size_t_ptr= ftell(f);

fseek(f, 0, SEEK_SET); /* same as rewind(f); */

BYTE *string = malloc(*size_t_ptr);

fread(string, *size_t_ptr, 1, f);

fclose(f);

return string;

}

void storeContent(char* filename, BYTE* buffer,size_t bufferSize){

FILE *f = fopen(filename, "wb");

fwrite(buffer,bufferSize,1,f);

fclose(f);

}

BYTE* initXor() {

BYTE* buf=(BYTE*)malloc(64);

DWORD v16=0x2A;

for(int i=0;i!=64;i++) {

v16=18000*((WORD)v16)+HIWORD(v16);

buf[i]=LOBYTE(v16);

//printf("%02X,", buf[i]&0xFF);

}

return buf;

}

void unXorBuffer(QWORD size_of_fileBuffer,BYTE* fileBufferInMem) {

if (size_of_fileBuffer<1){

return;

}

BYTE* unXorArray=initXor();

QWORD bufidx = 0LL;

QWORD uXidx = 1;

BYTE notDone;

do

{

DWORD uXidxOffset = uXidx + 62;

if ( uXidx - 1 >= 0 )

uXidxOffset = uXidx - 1;

notDone = size_of_fileBuffer <= uXidx;

fileBufferInMem[bufidx] ^= unXorArray[uXidx - 1 - (uXidxOffset & 0xFFFFFFC0)];

bufidx = uXidx++;

}

while ( !notDone );

free(unXorArray);

}

int main(int argc, char *argv[]) {

BYTE* uXor=initXor();

size_t gmSize;

BYTE* gmBuffer=readContent("./global-metadata.dat",&gmSize);

printf("%d",gmSize);

unXorBuffer(gmSize,gmBuffer);

storeContent("./global-metadata.dat.dec",gmBuffer,gmSize);

return 0;

}

на выходе получим "правильный" global-metdata.dat

далее можно воспользовваться il2cppdumper и восстановить структуру( не содержимое!!) приложения, т.е. классы их поля и методы.

и тут скорее всего (а на это яно намекали имена функций в IDA в libil2cpp) мы ничего понять сходу не сможем. т.к все эти классы\поля\методы\ обфусцированы, т.е. нет возможности по названиям понять кто за что отвечает:

Об игрушках unity и android Android, Unity, Игры, IT, Программирование, Длиннопост

в таком случае наиболее очевидным и простым является анализ самого приложения с точки зрения "а что там вообще проиcходит. и куда мы можем сваять заплатку". в процессе анализа выявились 3 направления - данные игры( т.е всевозможные цены. шансы. награды и тп.) сохраниения - дада. в игре есть облачное сохранение. и ГПСЧ(random generator - вот он как раз и отвечает в конечном счете за всякие шансы\награды и тп)

разглядывая то, что "забыли\не смогли" закрыть разработчики своим обфускатором видно:

Об игрушках unity и android Android, Unity, Игры, IT, Программирование, Длиннопост
  1. какой-то античит(значит нас "пасут" где?)

  2. используется json( полистав листинг классов, аннотации на методах\полях - игра вдоль и поперек использует json для маршаллинга. учтем.)

  3. какой-то savegamefree - значит можно приицепиться к save & load фукциям и посмотреьт что сохраняется и как ( сразу скажу, что необходимости в этом нет, т.к у нас есть п2)

чтож. приступим.

не буду долго описывать процесс поиска античита - он пристуствует. и подвязан на эти самые шансы. цены. игровую валюту и т.п) и в процессе "исследования" приходилось несколько раз начинать сначала ввиду "банхаммера" с "той стороны".

оставим за кадром процесс "прицепляния" frida к libhoudini в эмуляторе ( намекну только, что загрузка DLL происходит через последовательный поиск искомой библиотеке в каталоге "для библиотек приолжения" в апк в системе...)

для упрощения работы с frida и il2cpp я наткнулся в гугле на il2cpp-bridge - эдакая удобная надстройка над функционалом frida для более удобного вызова\анализа\перехвата интересующих меня функций (я нашел ее много позже и до этого полз через классический вариант. поиск RVA искомых функций в дампе c4+ файле, который получил из il2cppdumper и последующим их перехватом)

Атаковать будем ГСЧ - т.е. искуственно выдавать нужные нам шансы для какого-либо дейтсвиия. а именно "выпадение нужной нам вещи". для этого надо понимать. что ГСПЧ - это некая функция, которая имеет "начальную точку" и период(т.е. через какое-то большое количество обращений будут возвращаться те же самые значения от старта)

для этого находим все функции, где упомянется слово Random и "прицепимся" к ним. посмотрим какой именно ГПСЧ используется ( как минимум у нас их два - это System::Random и unity random ) входные и выходные значения в момент "выпадения вещи" (и продолжим уже исключительно с ним)

згрузим сохранение - повторим -загрузим-повторим.

наблюдеаем следующее:

каждый раз выпадает одна и та же вещь . следовательно где-то в сохранении (и даже можно найти где. но не нужно) сохраняется текущее значение для "начального значения" нашего ГПСЧ(initial seed, seed) и используется вызов всяких функций randomXXXX

по семантике понятно, что это "качество" вещи.

аттрибуты. значения аттибутов.

нас интересует только качество

следовательно схема такая:

перехватываем установку seed - устанавливаем свое значение. ловим нужную нам вещь

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

boilerplate взят тут

git remote -v

origin https://github.com/oleavr/frida-agent-example.git (fetch)

origin https://github.com/oleavr/frida-agent-example.git (push)

import {Buffer} from "buffer";

import "frida-il2cpp-bridge";

console.log("Rebuilded")

function awaitForCondition(callback: any) {

var i = setInterval(function () {

var addr = Module.findBaseAddress('libil2cpp.so');

console.log("Address found:", addr);

if (addr) {

clearInterval(i);

callback(+addr);

}

}, 0);

}

function _attach(base: any, klass: any, mtd: any, get_StackTrace: any) {

const va = mtd.virtualAddress

if (va == 0x0) {

//console.log("Attach fail", mtd.virtualAddress)

return

}

try {

Interceptor.attach(va, {

onEnter: function (args) {

console.log("onenter ", klass.fullName, `mtd:"${mtd}"`);

if (get_StackTrace != null) {

console.log(get_StackTrace.invoke());

}

//console.log("encode password", [>input<]pwd);

}

});

} catch (err) {

console.log(klass.fullname.tostring(), mtd, err)

console.log("error interception rva", mtd, va.sub(base))

}

}

const klassesOfInterests = [

// /*MainCharacterData*/"SH.491471447.sh_cxse1",

// /*some json related stuff*/"SH.491473776.sh_dbdo1",

// /*some json related stuff*/"SH.491473773.sh_dbdl1",

// /*some json related stuff cur character data? */"SH.491471465.sh_cxsw1",

// /*some json related stuff to files/sc.d? */"SH.491471742.sh_cydk1",

// /*diamond related data*/"SH.491471457.sh_cxso1",

// /*some logs to json handling?*///"SH.491475490.sh_ddri1",

// //"SH.491471477.sh_cxth1",

//"UnityEngine.Random",

// "System.Random",

// "RandomGemRewardVisualInfo",

// "PseudoRandom",

// "DefaultRandom",

"CodeStage",

// "SH.Feature.MS.CardProcess",

// "SH.Feature.RL.DiamondProcess"

]

const mtdsToSkip = [".ctor", "CurrentOwned", "get_IsRunning"]

/*

*

* enum of some events related to diamondProcess and game

* SH.491471427.sh_cxrk1

*

* ????

* SH.491471477.sh_cxth1

* assets related stuff?

* SH.491471546.sh_cxvx1

* */

awaitForCondition(function (base: any) {

const il2cpp = ptr(base);

//bind(il2cpp, ObscuredRefsRVAs)

//bind(il2cpp, BayatGamesFns)

Il2Cpp.perform(() => {

const SystemString = Il2Cpp.corlib.class("System.String");

const single = Il2Cpp.corlib.class("System.Single");

const int32 = Il2Cpp.corlib.class("System.Int32");

const get_StackTrace = Il2Cpp.corlib.class("System.Environment").method("get_StackTrace");

const SystemBoolean = Il2Cpp.corlib.class("System.Boolean");

const SystemType = Il2Cpp.corlib.class("System.Type");

const cSharp = Il2Cpp.domain.assembly("Assembly-CSharp");

const cSharpFP = Il2Cpp.domain.assembly("Assembly-CSharp-firstpass");

/*

with SEED=1 we have right top legendary item

this is Range(x,y) return values

inside 1 Range 0,1 System.Single 0.0003153085708618164

inside 1 Range -0.20000000298023224,0 System.Single -0.11122268438339233

inside 1 Range -0.20000000298023224,0 System.Single -0.06576250493526459

inside 1 Range -0.20000000298023224,0 System.Single -0.03238866850733757

*/

let seedValue = 1;

global.setRandomSeed = function (value) {

seedValue = value;

console.log("seed", seedValue)

}

let rrValues = []

const setRandomRange = function (...values) {

rrValues = [];

const rrTmp = [];

values.forEach(v => {

//const sV = Il2Cpp.string(`${v}`);

//rTmp.push(single.tryMethod("Parse", 1).invoke(sV));

rrTmp.push(v)

})

rrValues = rrTmp.reverse().sort()

console.log(rrValues.reverse());

}

global.overloadValues = function (vMin, vMax) {

var x = [];

for (var i = vMin; i <= vMax; i++) {

x.push(i);

}

rrValues = x.reverse();

console.log(rrValues)

}

global.setRandomRange = setRandomRange;

global.fixRandom = function () {

cSharp.image.classes.filter(klass => klass.fullName.includes("SH.Feature.E.RandomEquipmentProcess"))

.forEach(k =>

k.methods.filter(m => m.name.includes("Generate"))

.forEach(m => {

if (m.parameterCount != 2) {

return

}

m.implementation = function (a, b) {

console.log('genrate', k.fullName, m)

console.log(a)

console.log(b)

return this.tryMethod("Generate").invoke(a, b);

}

})

)

/*

* mix SEED with UNITY int32 RANDOM.RANGE gives us neceesarry results

* setRandomSeed(1123120)

* setRandomSeed(1023121)

* overloadValues(20,23)

* */

Il2Cpp

.domain.assembly("UnityEngine.CoreModule")

.image.class("UnityEngine.Random")

.methods.forEach(mtd => {

console.log('inject in ', mtd)

mtd.implementation = function (...args) {

const rva = mtd.relativeVirtualAddress;

if (!!rva && rva.equals(ptr(0x12e8d0c))) {

const a = args[0]

const b = args[1]

//this is item id, but idk what value it need to be?

// if (a === 0 && b === 100) {

if (a === 0 && b === 100) {

const v = rrValues.pop()

if (v !== undefined) {

console.log('overload Range(0,100) with', mtd, a, b, v)

return 0 + v

}

}

const rv = mtd.invoke(a, b);

console.log('range(x,y)', a, b, rv)

// int32 Range(int32, int32)

return rv

}

if (rva.equals(ptr(0x12e8cc0))) {

//float Range

//console.log('floatRange');

return 0.0006;//mtd.invoke(seedValue !== undefined ? seedValue : 1);

}

if (rva.equals(ptr(0x12e8b64))) {

//InitState

console.log('initState');

return mtd.invoke(seedValue !== undefined ? seedValue : 1);

}

const rv = mtd.invoke(...args);

//console.log('invoked', mtd, mtd.relativeVirtualAddress, args, rv)

return rv;

}

})

}

});

})

запустили приложение на эмуляторе.

запустили frida с нашим скриптом. загрузили свою сохраненную игру.

пробуем без "своего" ГСПЧ:

Об игрушках unity и android Android, Unity, Игры, IT, Программирование, Длиннопост

включаем "свой":

Об игрушках unity и android Android, Unity, Игры, IT, Программирование, Длиннопост
Об игрушках unity и android Android, Unity, Игры, IT, Программирование, Длиннопост
Об игрушках unity и android Android, Unity, Игры, IT, Программирование, Длиннопост

вуаля.

цель достигнута. любые "шансы" в игре теперь под нашим контролем. значения контролируемых античитом участков памяти - не затрагивались( т.е. всю валюту и прочая целесообразнее добывать "законными" методами..)

таким образом используя frida и немного терпения можно получить результат без затрат времени и\или денег( то, что в основном используют как валюту подавляющее большинство игроков)

на этом интерес к этой задаче интерес мой закончился, но этот пост - пусть остается. в том числе и как памятка мне

ЗЫ техники изменения значений переменных в памяти малоэффективны из-за используемого античита

Спасибо, что прочитал.

Показать полностью 6
[моё] Android Unity Игры IT Программирование Длиннопост
15
0
aks2dio
aks2dio
11 месяцев назад

Как быстро наделать юнит-тестов с AI ?⁠⁠

[моё] Unity Gamedev Разработка Программирование Искусственный интеллект Rider Тест Совет Клип Обучение Видео YouTube
5
9
SNK27
SNK27
1 год назад
Лига Разработчиков Видеоигр

Как я начал разработку сюжетного раннера - Космо Капитан⁠⁠

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

Тогда я совсем не умел писать код. Эта игра и дальнейшее ее развитие - стали моим первым опытом написания собственного кода (о нем позже).

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

Как я начал разработку сюжетного раннера - Космо Капитан Инди, Инди игра, Gamedev, Unity, Разработка, Разработчики игр, Разработчики, Игры, Новости игрового мира, Дневник разработки, Программирование, Программист, Геймеры, Unity3D, Яндекс Игры, Видео, YouTube, Длиннопост

Очень старая обложка игры

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

Чтобы выложить игру, я решил ее визуально улучшить, добавить сохранения, поднять качество интерфейса. Зайдя в свой старый код спустя год, я ужаснулся его написанием. Пришлось разбираться в каше некачественного кода. После улучшения скриптов, я заметил, как звёзды на фоне игры мылили глаза и я сделал их красивыми через рандомные частицы. Теперь получилось, будто герой взлетает откуда-то. Добавил планету, похожую на землю при старте игры. Но куда герой улетает? Я также решил добавить одну единственную фразу:

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

Как я начал разработку сюжетного раннера - Космо Капитан Инди, Инди игра, Gamedev, Unity, Разработка, Разработчики игр, Разработчики, Игры, Новости игрового мира, Дневник разработки, Программирование, Программист, Геймеры, Unity3D, Яндекс Игры, Видео, YouTube, Длиннопост

Возможно, новая будущая обложка игры или просто арт с игрой

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

Что я добавил и добавлю в игру - узнаете по ходу разработки. Подпишитесь на аккаунт, пожалуйста! Мне нужна ваша поддержка. Буду рад критике, советам и идеям!

А пока можете оценить трейлер и увидеть сами, что в игре уже реализовано!

ВИДЕО:

Показать полностью 2 1
[моё] Инди Инди игра Gamedev Unity Разработка Разработчики игр Разработчики Игры Новости игрового мира Дневник разработки Программирование Программист Геймеры Unity3D Яндекс Игры Видео YouTube Длиннопост
0
10
SNK27
SNK27
1 год назад
Лига Разработчиков Видеоигр

Куда же выложить игру?⁠⁠

- Этот вопрос меня долго волновал. Мобилки недоступны, но оказывается есть другая площадка, которая у нас в России имеет много возможностей и игроков, и это - Яндекс Игры.

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

ЧТО ДЕЛАТЬ В ИГРЕ?
В игре есть обучающий механикам уровень и бесконечный уровень, где нужно выживать, убивая патрулирующих роботов, робосферы и турели, из пистолета или при помощи топора, а также искать патроны, аптечки и подзарядку. Да, персонаж - тоже робот и ему нужна энергия для сражения.

КАКИЕ ЕСТЬ МЕХАНИКИ?
Эта часть, скорее, для программистов или для портфолио. Все скрипты и механики сделаны самостоятельно. Импортированы только несколько моделей и аудио файлы.
- ООП. Например, все враги имеют один общий скрипт, в котором хранятся общие для всех врагов переменные и методы - количество жизней, получение урона, движение, поиск игрока итп.
- Примитивный искусственный интеллект. Например, Патрулирующий враг имеют свою логику движения. Он оценивает окружающую обстановку. Он не пойдет в стену, не прыгнет в пропасть, не повернет в тупик, прыгнет на уступ, пойдет задним ходом, если заблудился. И своя логика при обнаружении игрока.
- Игрок. Можно прыгать, бегать, приседать, стрелять из пистолета, использовать зум прицел или крушить всё топором и блокировать удары.
- Враги. Турели, работающие как камеры видеонаблюдения и пулеметы. Есть защищённые медленные и слабые быстрые.Против них лучше не идти напролом. Патрули можно обезоружить, нанеся урон в "пушку" врага, а можно ударить по "ногам" и лишить его движения, или же ударить сразу в голову. Есть еще прыгающая робосфера, которая наносит урон шипами при контакте с игроком. С ней нужно быть быстрым, иначе она сама разгонится до высоких скоростей и врежется в игрока.


Целый месяц я готовил свою игру Plazma Heart к релизу на Яндексе. И игра опубликована! Спасибо всем тестировщикам за помощь.


Теперь мне нужна твоя помощь! Скачивать и регистрироваться не нужно! Просто перейди по ссылке и поиграй в игру! Важно привлечь внимание к релизу, и, надеюсь, ты мне в этом поможешь!

Дополнительно можно оценить игру и написать отзыв, если есть (любой) аккаунт на Яндексе.

Также больше историй разработки новых игр будет на моем аккаунте!

ИГРА: https://yandex.ru/games/app/335508?lang=ru

Куда же выложить игру? Компьютерные игры, Геймеры, Gamedev, Яндекс Игры, Программирование, Unity, Unity3D, Инди, Инди игра, Разработка, Игры
Показать полностью 1
[моё] Компьютерные игры Геймеры Gamedev Яндекс Игры Программирование Unity Unity3D Инди Инди игра Разработка Игры
15
8
user8676564
user8676564
1 год назад
Лига Разработчиков Видеоигр

Простой способ сделать искусственный интеллект и экосистему в игре, если ниче не умеешь⁠⁠

P.S. Если не сложно, добавьте плиз игру в список желаемого, будет огромная скидка на выходе https://store.steampowered.com/app/2818080/Echoes_of_the_Aby...

[моё] Компьютерные игры Gamedev Инди Инди игра Игры Искусственный интеллект Unity Roguelike Indiedev Движение Разработка Геймеры Программирование Дизайн Хоррор игра Квест Видео YouTube
1
17
MaksimBaulin
MaksimBaulin
1 год назад

Как я игру на Unity делал⁠⁠

Забегая вперед - все получилось, игра в стиме, скоро пригласят делать ведьмака 8 и диабло 12

Сухо и кратко. Игры до этого никогда не делал, с Unity познакомился через курс на Udemy. Есть огромное желание делать игры, давно об этом мечтал и в один момент понял, что пора завязывать с мечтаниями, надо делать.

Как я игру на Unity делал Gamedev, Unity, Разработка, Игры, Steam, Компьютерные игры, Программирование, Программист, Длиннопост

Скриншот из моей игры Cyber Workshop

Мой бэкграунд это фулстек на .NET/C#. Из фронты знаю HTML/CSS, React, Blazor и в том же духе. ЭС КЮ ЭЛЬ тоже знаю. Не могу сказать, что я стронг мидл, но и джуном себя не назову. В определенный момент я перестал придавать этому значение, сосредоточился на решении проблем, развитии своих скиллов. Понятие не имею, сколько там всего структур данных и как считать сложность алгоритмов, а так же сколько транзисторов используется при вызове моих методов.

Игра создана на Unity, формат 2.5D (2D модели в 3D мире). Из допольнительного это UI Toolkit. Платные и бесплатные ассеты звуков и спецэффектов.

Активно использовал ChatGPT4, все картинки в игре получены с помощью Midjourney.

На процесс разработки было потрачено 4.5 месяца, так вышло, что начал с начала 24 года, а публикация произошла 16 мая. Можно сюда заложить вынашивание идеи и грубо сказать, что игру делал 5 месяцев.

Игру можно найти в Steam: Cyber Workshop

Посмотреть как я рассказываю про мою игру можно на Youtube: Мой канал

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

Как я игру на Unity делал Gamedev, Unity, Разработка, Игры, Steam, Компьютерные игры, Программирование, Программист, Длиннопост

Скриншот из моей игры Cyber Workshop

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

Если ты хочешь делать игру и утебя нет навыков в программирование от слова совсем, то вот тебе та самя мотивирущая фраза от меня:

Сейчас делать игры легче и доступнее, чем когда-либо.

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

То ценное, что я получил при разработе в техническом плане:

Перое. Я уверен в том, что Unity, Unreal Engine и другие движки, это инструменты для создания инструментов для создания вашей игры. Грубо говоря, тебе нужно написать свой фреймворк, для разработки твоей игры. Как только я это осознал, то автоматиески появились такие штуки, как например Система Схем (смотри описание игры). Весь этот объект настроен таким образом, что бы в одном месте добавлять и изменять схемы, которые используются в игре. Что бы сделать золотой слиток, необходимо две золотые руды. Ничего не мешает изменить золотой слиток так, что бы запихать в него все возможные к созданию предметы в мастерской, то есть реакторы, имплатны и так далее, все это будет работать, подсчитываться, сколько и чего нужно заказать для изготовления, а UI будет выстраиваться корректно.

Возможно, ты это уже знаешь, мне это не известно, я делюсь своим опытом.

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

Возможно и это ты тоже уже знаешь.

Третье. Создание книги, настольной игры, компьютерной игры имеет под собой одинаковые принципы. У тебя есть идея, тебе нужно выложить ее из головы в реальность в определенной форме - книга бумажная, книга электронная, смс знакомому, надпись на заборе. Относительно игр это настольная игра, это устное обговаривание правил, то есть передача информации об правилах и принципах игры в головы других людей с помошью речи (например игра в города, если другой человек не знает, что это вообще такое и как в это играть). Это касается и компьютерных игр. Я осмелюсь выделить две состовляющие, которые необходимо принять. Есть идея игры, которую ты закладываешь в какую то форму, которая существует в реальности. Есть инструменты повествования этой идеи, которая заложена. Рассказываю как умею. Грубо говоря, в шахматы можно играть на компьютере и без интерфейса о том, сколько фигур срубил противник, сколько времени до конца хода и так далее. Ты можешь это и в голове держать. Но тогда можно оказаться в ситуации, когда ты прирожденный игрок в шахматы, но ты не смог въехать в игру, так как над доской не показывались клетки, по котором фигура может ходить и идею ты не уловил, ну его, пойду лучше тик ток посмотрю. Еще раз. Есть идея, которую автор закладывет в книгу. Есть способы получения заложенной информации наружу, в головы других людей. Если атор накосячил со средствами повествования инфомрации наружу, то возникает ситуация, что одни люди сумели понять глубокий смысл, а другие нет - слишком "сложна". Но тут и обратная ситуация может быть - идея легко извлекатеся, но она слишком проста, не очень интересно, что тут сложного. На мой взгляд это можно представить, как лабиринт с призом в центре. Если лабиринт сложный, это автоматически увеличивает ценность награды, однако это может создать ситуацию, когда в это не интересно играть. Слишком сложно, а награда недостаточно мотивирует сама по себе. Справедливо и обратно - лабиринт слишком простой, нет интереса его проходить, желанность награды становиться меньше, даже если награда очень ценная сама по себе. Как то так, я не писатель, как могу, так описываю. К чему это все. Баланс игры должен заключается в комбинации уровня сложности достижения цели и ценности цели самой по себе. Причем если сложность лабиринта повысить, то и желание получить что то ценное, потратив столько сил, становиться больше. Если лабиринт слишком простой, ну ты понял.

Если в Counter Strike дать возможность летать по карте, то играть становиться легче, интерес играть на разных картах уменьшается - нет никаких ограничений и уникальных ситуаци. Это как пример, на мой взгляд.

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

Четвертое. Настает момент создание доп механик, которые как раз помогают осуществлять заложенный автором, процесс игры или процесс извлекания информации об идее игры. Описываю как могу. К сути. Как только я реализовал механику крафта, заказа ресурсов, выполенния заказов и получения денег за них, возникли вещи, которые просто невозможно предвидеть на стадии идеи или ее ранней реализации. Например, в моей игре это инфомрация о том, а какие предметы и сколько требуется сейчас для поступившых заказов. Это просто неудобно и отталкивает каждый раз заходить в UI окна зкаказов и смотреть, что там надо изготовить. Поэтому появилась необходимось создать что то, что будет помогать играть. Вот тут важный момент - это не является основной механикой, это не появиться на стадии идеи игры. И может показаться, что это "испортит" ту идею, которую ты там себе придумал (это я про себя). В определенный момент, я понял, что без этого просто никак, и что бы я там себе не навыдумывал, в реальности в это оказалось неудобно играть. Собственно вот это то ценное, к чему я так долго подводил. Основая механика крафта - это классно! Но так же надо и механики для устранения явных неудобных моментов. И вот этим доп механикам я противился, считая, что таким образом мое виденье игры изменяется и отходит от изначальной картины. Собственно, и желание реализовывать их, не было. Плавно перетекаем в тестирование на людях.

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

Думаю, ты тут ожидал кучу скринов, встаки с кодом. Я так и хотел сначала, но после передумал. Посмотреть игру можно на youtube, а вставки моего кода просто не пременимы к твоей игре, твоему проекту. Так что постарался выделить ценные вещи на примере своей игры, своего опыта.

Шестое и последнее. Моя главная ошибка, это отсутсвие какого либо продвижения себя, свой игры. Я слаб в этом, просто боюсь этого всего. Боюсь, того, что люди напишут в комментах под этим постом, на yutube и так далее. Но желание довести дело до конца больше, так что надо чем то жертвовать. В данном случае, я жертвую комфортом пребывания в неведении о том, а что там интернет думает обо мне и моей игре. К сути. Я только начинаю полноценно рекламировать себя, свою игру и вообще быть активным публично в этом плане. Что то ценного конкретно я назвать не могу - я просто не знаю. Но то, что надо начать продижение как можно раньше, это мне уже понятно. Так как я опоздал с этим, дофига как, то делаю такие вещи как: видео блог разработки, заметки в соцсетях, публикации в группах. Собственно, и это статья для рекламы меня, моей игры. Я верю, что то, чем я поделился выше, очень ценно. Но вот насколько это ценно кому-то помимо меня, это другой вопрос. Я прекрасно понимаю, что это может быть совершенно не применимо к тебе и ты зря дочитал то этого момента. Чтож, де*ьмо случается.

Показать полностью 1
[моё] Gamedev Unity Разработка Игры Steam Компьютерные игры Программирование Программист Длиннопост
0
Блог компании
VSKurs
VSKurs
1 год назад

ТОП-15 лучших курсов Unity: обучение онлайн с нуля для начинающих, бесплатные + платные⁠⁠

В этой статье сравниваем ТОП-15 лучших онлайн-курсов по обучению Unity + рассматриваем бесплатные курсы.

Unity — это мощная кроссплатформенная игровая движок, разработанная компанией Unity Technologies. Он используется для создания интерактивных 2D и 3D приложений, таких как игры, архитектурные визуализации и анимации. Unity стал популярен благодаря своей доступности, мощному функционалу и большому сообществу разработчиков.

1. Курс “Разработчик игр на Unity” (Skillbox) — 826 отзывов

Информация о курсе: стоимость — 6 182 ₽ / мес. в рассрочку на 24 месяца, длительность - 4 месяца

Особенности: Доступ к курсу навсегда. Вы составите портфолио из 5 игр, получите сертификат установленного образца, и сможете начать работать Junior-разработчиком.

Чему вы научитесь:

  • Программирование на C#:
    Освоите основы языка C# и сможете создавать игровую логику для различных жанров.

  • Ведение дизайн-документа:
    Научитесь создавать понятные для команды дизайн-документы, описывающие правила и элементы игры.

  • Разработка игр на Unity:
    Поймёте этапы и инструменты разработки игр на Unity, сможете адаптировать проекты под ПК, iOS и Android.

  • Создание 3D-моделей и анимации:
    Изучите моделирование персонажей и окружения, добавление анимации и импорт объектов в Unity. Сможете создавать игры самостоятельно без помощи моделлера.

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

  • Создание противников с AI и окружения:
    Овладеете созданием противников с искусственным интеллектом, настройкой освещения, добавлением визуальных эффектов и звуков для повышения глубины и интереса игры.

Содержание программы:

  • Введение в разработку игр:
    Понимание процесса разработки игр, этапов, обязанностей разработчиков, основ геймдизайна и программирования, различий между движками.

  • Разработчик игр на Unity:
    Основы разработки на Unity, программирование на C#, работа с ассетами, создание игрового ландшафта и персонажей. Выполнение 5 проектов в рамках курса.

  • Blender:
    Создание детализированных сцен и визуализаций, работа со сложными эффектами. Выполнение 5 проектов в рамках курса.

Подробнее о курсе Unity →

2. Курс “Разработчик игр на Unity” (GeekBrains) — 1110 отзывов

Информация о курсе: стоимость — 5 452 ₽ / мес. в рассрочку на 36 месяцев, длительность - 10 месяцев

Особенности: Вы выполните 10+ объемных проектов: от 2D шутера до собственной CRM на C#. Диплом о профессиональной переподготовке. Возможность практики в «GameBox».

Освойте создание игровых сцен, работу с анимациями и визуальными эффектами. Научитесь программировать на C# и разрабатывать 2D и 3D игры для различных платформ, став квалифицированным разработчиком игр.

Программа обучения:

  • Введение в игровую индустрию

  • Основы разработки игр

  • Разработка игр на Unity с нуля

  • Middle-разработчик игр на Unity

  • Итоговый проект

  • Система контроля версий Git

  • Blender

  • Технические основы разработки игр.

Подробнее о курсе Unity →

3. Курс “Разработчик игр на Unity с нуля” (Skillbox) — 826 отзывов

Информация о курсе: стоимость — 5 134 ₽ / мес. в рассрочку на 24 месяца, длительность - 3 месяца

Особенности: Подробная обратная связь от куратора-эксперта. 5 проектов в портфолио. Доступ к курсу навсегда. В конце обучения получите сертификат установленного образца.

На этом курсе вы научитесь создавать игры с нуля: разрабатывать идеи, оформлять их в концепт, работать с 3D-моделями и графикой, а также программировать на C# в Unity. Практические занятия помогут вам собрать портфолио и начать карьеру в игровой индустрии.

Что вы освоите:

  • Программирование на C#: Изучите язык программирования C# с нуля и научитесь писать игровую логику для различных жанров.

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

  • Разработка игр на Unity: Разберётесь в каждом этапе разработки 2D- и 3D-игр. Научитесь адаптировать игры для различных платформ, включая ПК, iOS и Android.

  • Создание 3D-моделей и работа с ассетами: Освоите основы 3D-моделирования для создания окружения и персонажей, а также научитесь импортировать и использовать ассеты в своих проектах.

Программа курса:

  • Введение

  • Работа с ассетами на сцене

  • Знакомство с интерфейсами

  • Создание и использование скриптов

  • Циклы и массивы

  • Работа с временем в Unity

  • Проект 1: Создание игры "Save the village"

  • Перемещение и вращение

  • Знакомство с физическим движком

  • Проект 2: Создание игры "Wild Ball"

  • Нарративный дизайн видеоигр

  • Проект 3: Создание игры "Платформер"

  • Знакомство с Blender

  • Моделирование объектов (Props Modeling)

  • Работа с материалами в Blender

  • Создание Low Poly персонажей

  • Создание игрового ландшафта

  • TimeLines

  • Cinemachine

  • Постпроцессинг

  • Бонус-модуль: Командная разработка

  • Проект 4: Создание игры "Crazy Run"

  • Бонус-модуль: Геймдизайн

  • ИИ и поиск пути

  • Raycasts

  • Проект 5: Финальная работа.

Подробнее о курсе Unity →

4. Курс “Разработчик игр на Unity” (SkillFactory) — 427 отзывов

Информация о курсе: стоимость — от 4 260 руб. / мес. в рассрочку на 36 месяцев, длительность - 12 месяцев

Особенности: Создадите 5 проектов 2D и 3D игр в ходе обучения. Получите помощь в трудоустройстве от Центра карьеры.

Программа курса:

  • Введение в разработку игр (GameDev)

  • Основы программирования на C#

  • Основы геймдизайна

  • Создание игры Space Shooter

  • Разработка Tower Defense

  • Проектирование 3D-гонок

  • Командная или инди-разработка собственной игры.

Приобретаемые навыки:

  • Программирование на C#

  • Создание 2D и 3D моделей и анимаций

  • Разработка игр на Unity для различных платформ

  • Создание многопользовательских игр

  • Использование Unity API

  • Написание игровой логики

  • Ведение дизайн-документа

  • Продвижение игр и монетизация.

Подробнее о курсе Unity  →

5. Курс “Разработчик игр на Unity” (Нетология) — 215 отзывов

Информация о курсе: стоимость — 100 500 ₽ или рассрочка на 36 месяцев - 2 938 ₽ / мес., длительность - 13 месяцев

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

Программа обучения:

  • Основы создания игр

  • Введение в профессию разработчика игр

  • Работа с Unity

  • Программирование на C# и его использование в Unity

  • Разработка и прототипирование игр в Unity

  • Создание мобильных игр

  • Развитие soft skills

  • Программа трудоустройства

  • Самозанятость и фриланс

  • Основы моделирования в Blender

Приобретаемые навыки:

  • Прототипирование 2D- и 3D-игр на Unity

  • Создание пользовательских интерфейсов

  • Применение архитектуры современных игровых платформ

  • Использование бесплатных ассетов из Asset Store

  • Работа с ресурсами Unity: звук, текстуры, модели, анимации

  • Программирование на C#

  • Работа с шейдерами и системой частиц, настройка визуальных эффектов

  • Построение игровых сцен различных жанров

  • Прототипирование AI-противников и создание NPC

  • Подготовка игры к релизу

  • Настройка взаимодействия объектов в Unity.

Подробнее о курсе Unity →

6. Курс “Разработка игр на Unity” (XYZ School) — 118 отзывов

Информация о курсе: стоимость — , длительность - 5 месяцев (270+ часов обучения)

Особенности: Получишь сертификат о прохождении курса и помощь в трудоустройстве.

Научись создавать игры на Unity, программировать на C#, и разрабатывать играбельные 2D-прототипы, которые можно будет загрузить на Steam, App Store или Google Play.

Программа обучения:

  • Введение в курс

  • Создание платформера-пазла

  • Реализация боевой системы и NPC

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

  • Продвинутые игровые механики и визуальные эффекты

  • Оптимизация, аналитика, сборки и дипломный проект.

Подробнее о курсе Unity →

7. Курс “Unity Game Developer. Basic” (OTUS) — 126 отзывов

Информация о курсе: стоимость — 82 000 ₽ или рассрочка - от 8 200 ₽ / мес., длительность - 5 месяцев

Особенности: Создадите Top-Down зомби-шутер с нуля и выложите в Google Play. Получите помощь в трудоустройстве - карьерную консультацию, помощь в оформлении резюме и портфолио, а также разместите свое резюме в базе OTUS.

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

Программа курса:

  • Создание персонажа

  • Разработка оружия

  • Создание прототипа игры

  • Проектирование игрового интерфейса

  • Полная разработка игры

  • Подготовка к релизу

  • Проектный модуль.

Подробнее о курсе Unity →

8. Курс “Unity разработчик” (itProger) — 31 отзыв

Информация о курсе: стоимость — 12 675 руб. - 16 250 руб., длительность - 2-4 месяца

Приобретаемые навыки:

  • Владение языком программирования C#

  • Разработка программ для Windows на C#

  • Интеграция мультиплеера в игры

  • Создание мобильных 2D-проектов

  • Разработка 3D-проектов в Unity

  • Анимация в Unity

  • Публикация игр в Google Play и App Store

  • Создание AR-приложений

  • Внедрение монетизации в игры

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

Подробнее о курсе Unity →

9. Курс “Разработка игр на Unity” (Компьютерная Академия TOP) — 19 отзывов

Информация о курсе: стоимость — от 2 630 руб. / мес., длительность - 12 месяцев

Программа обучения:

  • Введение в платформу Microsoft.NET

  • Основы программирования на C#

  • Массивы и строки. Введение в классы

  • Обработка исключений

  • Пространства имен и перегрузка операторов

  • Индексаторы и свойства

  • Наследование и интерфейсы

  • Структуры, перечисления, делегаты и события

  • Использование коллекций и введение в Generics

  • Сборка мусора

  • Работа с файловой системой и основы XML

  • Сериализация объектов

  • Паттерны проектирования: MVC, MVP, MVVM. Принципы SOLID

  • Unity: основы создания игр и обработка ввода

  • Физика и игровые объекты

  • Шейдеры, освещение и камеры

  • Взаимодействие с 2D графикой

  • Использование 3D графики

  • Анимация

  • Работа со сценами

  • Использование аудио

  • Создание пользовательских интерфейсов (UI)

  • Кроссплатформенная разработка игр

  • Системы контроля версий и модульное тестирование

  • Работа в команде и управление программными проектами.

Подробнее о курсе Unity →

10. Курс “Unity разработчик” (ГЦДПО) — 12 отзывов

Информация о курсе: стоимость — 120 000 руб., длительность - 28 занятий

Четко структурированный курс обучения разработке на Unity, состоящий из 27 модулей. В ходе обучения вы создадите две полноценные игры разных жанров, освоите базовые навыки моделирования в Blender и сделаете первые шаги в разработке 3D игр на Unity. Курс подходит как для начинающих, так и для тех, кто уже имеет опыт в программировании.

Подробнее о курсе Unity →

11. Курс "Basic Unity" (Scream School) — 6 отзывов

Информация о курсе: стоимость — 90 000 руб., длительность - 5 месяцев (120 ак. часов)

Структура учебного курса:

  • Введение в Unity
    Учащиеся изучают принципы объектно-ориентированного программирования и основы языка C#, необходимые для работы в Unity. Они усваивают основные навыки работы с движком, такие как физика, работа с 3D моделями, создание шейдеров и материалов, управление светом и камерой, анимация и работа со звуком. В то же время они работают над учебным проектом, выбирая сложность самостоятельно.

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

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

Подробнее о курсе Unity →

12. Курс “Unity 3D” (Realtime School) — 2 отзыва

Информация о курсе: стоимость — 45 000 руб., длительность - 5 дней (50 часов)

Учебный план:

  • Исследование популярных ресурсов магазина Unity. Оценка лучших бесплатных ресурсов для ускорения процесса разработки игр.

  • Подробное изучение материалов. Создание реалистичных текстур и настройка шейдеров.

  • Реализация фотореалистичного рендеринга в Unity. Работа с отражениями, множественными камерами и RenderToTexture.

  • Применение статического и динамического освещения. Использование Reflection Probe и Light Probe Group. Запекание освещения.

  • Применение постобработки с помощью Post Processing Stack. Основы и настройка.

  • Работа с анимацией. Использование вил анимации и методы управления ими.

  • Создание анимации персонажей. Использование системы Mecanim и компонента Animator. Создание анимационных контроллеров и работа с скелетной анимацией.

  • Настройка переходов между анимациями с помощью State Machine. Программное управление состояниями.

  • Особенности передачи анимации. Риггинг и работа с аватаром персонажа.

  • Создание тканей и физическое моделирование их взаимодействия с объектами.

  • Разработка одежды с использованием мягких тел для анимированных персонажей.

  • Подробный обзор систем частиц. Работа с материалами и шейдерами для частиц, а также физика частиц.

  • Сочетание нескольких источников частиц и различных эффектов, таких как магия, взрывы и бафы.

  • Продвинутая физика в Unity. Работа со слоями, сложными коллайдерами, joint'ами и создание различных механизмов.

  • Объектно-ориентированное программирование в Unity. Применение практик и примеров реализации, работа с событиями, делегатами и интерфейсами классов.

  • Использование Singleton в разработке.

  • Управление временем с помощью таймеров и ожидание. Использование Coroutine на примерах.

  • Работа с файловой системой и ресурсами игры. Загрузка данных в реальном времени с использованием класса WWW

  • Хранение информации с помощью PlayerPrefs.

  • Использование класса WWW для запросов в интернет и загрузки данных с сервера.

Подробнее о курсе Unity →

13. Курс “Создание игр на Unity” (Я-Юниор)

Информация о курсе: стоимость — от 5 277 ₽ / мес. в рассрочку на 36 месяцев, длительность - 11 месяцев (можно закончить быстрее)

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

Подробнее о курсе Unity →

Бесплатные курсы курсы и уроки Unity

Курс “Создаём первую игру на Unity за 3 дня” (Нетология)

Познакомьтесь с ведущим движком для разработки онлайн-игр. С нуля вы создадите прототип шутера. Это будет ваш первый шаг в мире создания игр.

На курсе вы освоите:

  • Работу в Unity

  • Создание игровых уровней

  • Разработку головоломок

  • Создание ловушек

  • Реализацию стрельбы

  • Основы программирования на языке C#.

Подробнее о курсе Unity →

Курс “Создание игры на Unity для Яндекс Игр” (Яндекс)

Вы будете пройти шаг за шагом через процесс, который научит вас создавать онлайн-игры для браузера с помощью движка Unity engine. Вы загрузите их в Яндекс Игры и начнете зарабатывать, делая то, что вам нравится.

Новые навыки, которые вы освоите:

  • Работа в Unity

  • Написание скриптов на языке C#

  • Создание анимации для персонажей

  • Использование префабов

  • Создание спецэффектов

  • Добавление и настройка звуковых эффектов

  • Разработка системы сохранения игры

  • Создание пользовательского интерфейса

  • Внедрение внутриигровых покупок и рекламы

  • Загрузка игр на платформу Яндекс Игр.

Подробнее о курсе Unity →

Основные особенности Unity:

  1. Мультиплатформенность: Unity поддерживает множество платформ, включая Windows, macOS, Linux, iOS, Android, PlayStation, Xbox, Nintendo Switch и многие другие. Это позволяет разработчикам создавать приложения и игры, которые могут работать на различных устройствах.

  2. Интуитивный интерфейс: Unity предоставляет пользователям удобный графический интерфейс, который облегчает процесс создания и настройки игровых объектов, анимаций и сцен.

  3. Мощный движок рендеринга: Unity поддерживает высококачественные графические эффекты, включая освещение, тени, постобработку и шейдеры. Это позволяет создавать визуально впечатляющие игры и приложения.

  4. Скрипты и программирование: Unity использует C# в качестве основного языка программирования для создания игровой логики. Это мощный язык с богатыми возможностями, который позволяет разработчикам создавать сложные взаимодействия и поведения.

  5. Ассет Стор: Unity имеет собственный магазин ассетов, где разработчики могут покупать и продавать различные ресурсы, такие как модели, текстуры, звуковые эффекты, скрипты и плагины. Это значительно ускоряет процесс разработки.

  6. Поддержка VR и AR: Unity активно используется для разработки приложений виртуальной (VR) и дополненной реальности (AR), благодаря поддержке основных VR/AR платформ и устройствам.

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

Применение Unity:

  • Игры: Unity используется для создания игр различных жанров и масштабов, от инди-проектов до крупных коммерческих игр.

  • Образование: Unity применяется для создания образовательных приложений и симуляторов.

  • Архитектура и дизайн: С помощью Unity создаются архитектурные визуализации и интерактивные презентации дизайна.

  • Медицина: Unity используется для разработки медицинских тренажеров и симуляторов.

  • Кино и анимация: Unity применяется в производстве анимационных фильмов и спецэффектов.

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

Сколько нужно учить Unity?

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

Начальный уровень (от 1 до 3 месяцев):

  1. Основы интерфейса и инструментов:

    • Познакомьтесь с основным интерфейсом Unity и его компонентами.

    • Изучите базовые концепции сцены, объектов, компонентов и активов.

    • Пройдите несколько начальных уроков и туториалов.

  2. Основы программирования на C#:

    • Если вы не знакомы с C#, изучите основные концепции языка программирования.

    • Напишите несколько простых скриптов для управления игровыми объектами.

Средний уровень (от 3 до 6 месяцев):

  1. Создание простых игр:

    • Разработайте несколько простых игр, таких как платформеры или головоломки.

    • Изучите основы физики, анимации и пользовательского интерфейса.

  2. Работа с ассетами:

    • Научитесь импортировать и использовать ассеты из Unity Asset Store.

    • Практикуйтесь в создании собственных 2D и 3D моделей, текстур и звуков.

  3. Расширенные концепции:

    • Изучите работу с шейдерами, освещением и постобработкой.

    • Освойте основы оптимизации производительности.

Продвинутый уровень (от 6 месяцев до 1 года и более):

  1. Разработка комплексных проектов:

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

    • Работайте над проектами с использованием VR или AR.

  2. Групповые проекты и коллаборации:

    • Присоединяйтесь к команде разработчиков или участвуйте в игровых джемах.

    • Изучайте системы контроля версий и совместной работы над проектами (например, Git).

  3. Продвинутая оптимизация и выпуск игр:

    • Изучите методы оптимизации для различных платформ (мобильные устройства, ПК, консоли).

    • Освойте процессы публикации и монетизации игр.

Ресурсы для обучения:

  • Официальные учебные материалы Unity: Unity Learn, Unity Documentation.

  • Онлайн-курсы.

  • Книги и руководства: "Unity in Action", "Learning C# by Developing Games with Unity".

Нужно ли учить C# для Unity?

Да, для работы с Unity необходимо изучение C#, поскольку этот язык является основным для написания скриптов в Unity. Вот несколько причин, почему знание C# важно:

Почему нужно учить C# для Unity:

  1. Основной язык программирования: C# используется для создания игрового кода, логики и взаимодействий в Unity. Все скрипты, которые вы пишете для управления игровыми объектами, анимацией, физикой и пользовательским интерфейсом, пишутся на C#.

  2. Большая функциональность: C# предлагает множество возможностей для создания сложных и эффективных игровых систем. Он поддерживает объектно-ориентированное программирование, что упрощает создание модульного и повторно используемого кода.

  3. Совместимость и производительность: C# хорошо интегрируется с Unity и обеспечивает высокую производительность. Он также имеет широкий набор библиотек и инструментов, которые облегчают разработку игр.

  4. Большое сообщество и ресурсы: В сети доступно множество ресурсов для изучения C#, включая учебники, книги, видеокурсы и форумы. Большое сообщество разработчиков Unity активно делится своими знаниями и опытом.

Основные аспекты C#, которые нужно изучить:

  1. Основы синтаксиса: Переменные, типы данных, операторы, циклы, условия.

  2. Классы и объекты: Объектно-ориентированное программирование, наследование, полиморфизм.

  3. Методы и свойства: Создание и использование методов, свойства классов.

  4. События и делегаты: Обработка событий, использование делегатов.

  5. Коллекции и массивы: Работа с массивами, списками, словарями.

  6. Поток выполнения и асинхронность: Работа с потоками, асинхронные операции.

Сколько зарабатывают программисты на Юнити?

Средняя зарплата Unity-разработчиков в России варьируется в зависимости от уровня опыта и местоположения. Вот основные данные:

  1. Junior разработчики: от 45 000 до 80 000 рублей в месяц.

  2. Middle разработчики: от 60 000 до 180 000 рублей в месяц.

  3. Senior разработчики: от 120 000 до 500 000 рублей в месяц.

  4. Удаленные разработчики: от 35 000 до 300 000 рублей в месяц

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