Уроки по созданию браузерной игры (ККИ)
| |
Assasin | Дата: Понедельник, 31 Декабря 2012, 18:33 | Сообщение # 1 |
web-coder
Сейчас нет на сайте
| Предисловие В данных уроках не рассказывается о том как создать мега игру. В них описывается процесс создания игры. Как начать и что делать дальше. Что бы начинающие игроделы поняли что создание игры это не набор заготовок, которые можно сложить как конструктор и получить результат. Игра это то что ты сам придумал и написал. Только Ваша фантазия.
Описание игры Игра представляет собой коллекционирование карт, их улучшение и сражения с их помощью. К слову давно хотелось попробовать создать карточную игру, вдохновила меня на это, возможно знакомая вам, игра klanz.ru. В распоряжении игрока есть карты, которые имеют различные характеристики. Карты можно купить либо в магазине, либо на аукционе от других игроков. Карты игроков могут сражаться друг против друга за что получают опыт и возможность улучшить свои характеристики, а игрок получает игровую валюту для покупки карт, либо для улучшения самого себя. Более подробная информация будет описываться в последующих главах.
Список программ Denwer – локальный web-сервер Navicat MySQL – управление БД Notepad++ - написание скриптов Chrome, Opera, Firefox etc. – просмотр результата
Содержание Глава 1. Первые шаги. Знакомство с Navicat Глава 2. Основа игры – карты Глава 3. Магазин. Карты и бонусы для игрока Глава 4. «Доказать кто тут лучший» - сражения Глава 5. Уведомления и переписка Глава 6. Возможность заработать – аукцион Слово автора
Глава 1. Первые шаги. Знакомство с Navicat Приступим. Вы уже установили Denwer. Теперь нужно создать папку в которой будут храниться скрипты игры. У меня Denwer использует Локальный диск Z. Папку с игрой я назвал tgame и создал её в папке localhost. Перед началом создания файлов ознакомьтесь с программой Navicat - программа для работы с разными базами данных (далее БД). В качестве СУБД я использую MySQL. Найти программу можно на просторах интернета, так как на официальном сайте она не бесплатная. Видео продемонстрирует подключение к MySQL и создание БД. Напомню что Denwer должен быть включен иначе невозможно будет подключится к MySQL.
В видео показано создание БД – map_db, создание таблицы – user и структура остальных таблиц – Design Table. Как видно у меня уже была создана БД с нужными таблицами, я просто скопировал их и показал структуру. Во всех таблицах поле id должно быть Auto Increment и Unsigned Краткое описание таблиц battle – сражения battle_log – фразы используемые во время боя картами map – список всех карт post – почта shop – список вещей для магазина trade – список лотов для аукциона user – список всех игроков user_map – список карт у игроков word – список фраз, который можно использовать в бою Структура папок: - adm - папка:
- map.php - файл
- shop.php - файл
- inc - папка:
- battle.php - файл
- db.php - файл
- module - папка:
- .htaccess - файл
- battle.php - файл
- footer.php - файл
- header.php - файл
- main.php - файл
- maps.php - файл
- post.php - файл
- shop.php - файл
- trade.php - файл
- style - папка:
- .htaccess - файл
- index.php - файл
- reg.php - файл
- game.php - файл
Перед тем как приступить к авторизации и регистрации пользователей я подробно опишу таблицу user. Таблица user id – уникальный идентификатор, с помощью которого можно определить игрока. login – игровой логин игрока password – пароль зашифрованный md5 хешем email – почтовый ящик life – текущее здоровье игрока mlife – максимальное значение здоровья money – количество игровой валюты position – позиция карт для боя
Здоровье игрока важный показатель для боя. Чем больше здоровья, тем больше шанс продержать в бою и выиграть его. При регистрации игроку дается 25 здоровья. Забегая на перед сообщу что здоровье возможно повысить покупая специальные «таблетки» в магазине. Позиция карт для боя будет описана в Главе 2.
Регистрация Регистрация нужна для создания игрового аккаунта. Логика регистрации довольна проста, скрипт принимает данные (логин, пароль и пр.), проверяет есть ли такие данные в БД, если есть, то уведомляет пользователя о том что аккаунт с введенными данными уже существует. Если же в БД подобной записи не будет, то она создается и позволяет пользователю в дальнейшем заходить в игру. Приступим к написанию кода. Вход в игру При входе, скрипт проверяет наличие записи в БД с принятыми данными, если запись есть, то предоставляется доступ в игру, если записи нет, то уведомляется пользователь о том что аккаунта с введенными данными не существует.
Все создаваемые файлы должны быть в формате UNIX и в кодировке UTF-8 без BOM.
После создания всех нужных папок и файлов откройте файл .htaccess на редактирование. В этом файле будут храниться настройки для сайта, кодировка сайта и к какому файлу подключится если в адресной строке указан только url сайта. Код # Файл который будет подключен при указании названия # сайта с его доменом без лигних параметров. # Пример: tgame.localhost DirectoryIndex index.php
# Кодировка страниц AddDefaultCharset UTF-8
Теперь откройте index.php на редактирование. В нем будет авторизация пользователя. Это просто форма с двумя текстовыми полями и собственно кнопкой. При нажатии на которую скрипт производит проверки и решает впускать пользователя в игру или нет. Код <?php session_start(); # Подключается сессия if (!empty($_POST['auth'])) { include('inc/db.php'); # Подключается класс БД $db = new db; # Создается переменная для работы с классом БД # Фильтруются входящие данные $login = str_replace("'","\'",$_POST['login']); $password = str_replace("'","\'",$_POST['password']); # Проверяется существует ли запись в БД с получеными данными $sql = $db->q("SELECT * FROM `user` WHERE `login`='".$login."' AND `password`=MD5('".$password."')"); if (mysql_num_rows($sql) == 1) { # Если существует, то сохраняется сессия и переадресовывает в игру $row = mysql_fetch_array($sql); $_SESSION['user_id'] = $row['id']; header("Location: game.php"); } else { # Если нет, то выводится ошибка $err = '<div style="text-align: center;color: red;">Игрок не найден</div>'; } } ?> <!DOCTYPE html> <html> <head> <title>Браузерная игра "Картишки"</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php echo $err; # Вывод ошибки ?> <div style="text-align:center;"> <form method="post"> Логин: <input type="text" name="login" /> Пароль: <input type="password" name="password" /> <input type="submit" value="Войти" name="auth" /> </form> <br> <a href="reg.php">Регистрация</a> </div> </body> </html>
Сохраните файл и откройте reg.php. В этом файле прописана логика создания нового игрока. Также форма, только с тремя текстовыми полями и кнопкой. Код <?php session_start(); # Подключается сессия if (!empty($_POST['reg'])) { include('inc/db.php'); # Подключается класс БД $db = new db; # Создается переменная для работы с классом БД # Фильтруются входящие данные $login = htmlspecialchars(str_replace("'","\'",$_POST['login'])); $email = htmlspecialchars(str_replace("'","\'",$_POST['email'])); $password = htmlspecialchars(str_replace("'","\'",$_POST['password'])); # Проверяется существует ли запись в БД с получеными данными $sql = $db->q("SELECT * FROM `user` WHERE `login`='".$login."' OR `email`='".$email."'"); if (mysql_num_rows($sql) > 0) { # Если существует, то выводится ошибка $err = '<div style="text-align: center;color: red;">Такой логин/email уже существует </div>'; } else { # Если нет, то создается запись в БД, сохраняется сессия и переадресовывает в игру $db->q("INSERT INTO `user` (`login`,`password`,`email`,`position`) VALUES ('".$login."',MD5('".$password."'),'".$email."','0|0|0|0|0')"); $_SESSION['user_id'] = mysql_insert_id(); header("Location: game.php"); } } ?> <!DOCTYPE html> <html> <head> <title>Браузерная игра "Картишки"</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php echo $err; # Вывод ошибки ?> <div id="main" style="text-align:center;"> <form method="post"> <table align="center"> <tr><td>Логин:</td><td><input type="text" name="login" value="<?php echo $_POST['login']; ?>" /></td></tr> <tr><td>Пароль:</td><td><input type="password" name="password" /></td></tr> <tr><td>email:</td><td><input type="text" name="email" value="<?php echo $_POST['email']; ?>" /></td></tr> <tr><td colspan="2"><input type="submit" value="Зарегистрироваться" name="reg" /></td></tr> </table> </form>
<a href="index.php">Главная</a> </div> </body> </html>
Сохраните файл. Осталось добавить код в файл inc/db.php. Это класс для работы с БД, в нем также выводится отладочная информация для отслеживания скриптов и запросов которые грузят систему. Код файла. Код <?php /* * Класс базы данных * */
class db { public $time_load_page; # Время выполнения скрипта public $mem_start; # Потребление памяти при выполнении скрипта public $mem_pek_start; # Пиковое потребление памяти при выполнении скрипта const DB_HOST = "localhost"; # mysql хост const DB_USER = "root"; # mysql пользователь const DB_PASS = ""; # mysql пароль const DB_NAME = "tgame"; # БД mysql private $counter_mysql = 0; # Количество запросов private $timer_mysql = 0; # Общее время запросов private $mysql_query_desc; # Список запросов # Соединение с БД и запуск класса public function __construct() { $connect = mysql_connect(self::DB_HOST, self::DB_USER, self::DB_PASS) or die("База данных ушла в себя"); mysql_select_db(self::DB_NAME,$connect) or die("Невозможно найти БД"); # Установка языка записи в БД mysql_query("SET NAMES utf8"); } # Считаются запросы # @query:String - mysql запрос public function q($query) { $this->mysql_query_desc[] = $query; # Добавляется запрос в список запросов $this->counter_mysql++; # Увеличивается количество запросов # Считается время выполнения запроса $start = microtime(true); $result = mysql_query($query); $this->timer_mysql += microtime(true)-$start; # Возвращается выполненый mysql запрос return $result; } # Выводится отладочная инфа public function debug() { $txt = ""; $txt .= "Скрипт выполнен за ".$this->time_load_page." сек.<br>\n"; $txt .= "Количество запросов к БД: ".$this->counter_mysql."<br>\n"; $txt .= "Время запросов к БД: ".round($this->timer_mysql,4)."<br>\n"; $txt .= "Список запросов<br>\n<div>"; $len = sizeof($this->mysql_query_desc); for ($i=0;$i<$len;$i++) { $txt .= "[".($i+1)."] ".$this->mysql_query_desc[$i]."<br>\n"; } $txt .= "</div>"; if ( function_exists('memory_get_usage') ) { $type = "Kb"; $num = round($this->mem_start/1024, 2); if ($num > 1024) { $type = "Mb"; $num = round($this->mem_start/1024/1024, 2); } $txt .= "Потребление памяти: ".$num.$type." <br>\n"; } return $txt; } }
?>
Просмотреть результат можно тут http://tgame.localhost/index.php
При копировании материала ссылка на источник обязательна!
|
|
| |
Agiliter | Дата: Вторник, 11 Февраля 2014, 10:45 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| У меня возник вопрос. Если взять простенькую многопользовательскую онлайн игру, что-то вроде пошагового файтинга (Все пользователи в одной БД на сервере, а бои проходят 1х1 или 2х2, каждый пользователь может покупать броню и оружие, но и только). Для этого нужен клиент-сервер с БД. Клиент хочу написать на as3 (для соц сетей) - это однозначно, а сервер с БД на чем писать? php? Или другой язык? Что мне нужно изучать для этого? Какие инструменты и языки? Как я мыслю, as3, php и MySQL, ну и дэнвер для мелких тестов. Этого хватит? Проблема еще в том, что если ты сам начнёшь сервер писать, то как ты сможешь его оттестировать? Дешевый (100-150 р в месяц) виртуальный хостинг подойдет для этих целей? Клиентскую часть и гемплей я продумал, а вот сервер и БД для меня под вопросом.
|
|
| |
Assasin | Дата: Вторник, 08 Апреля 2014, 22:10 | Сообщение # 3 |
web-coder
Сейчас нет на сайте
| Пробуй на Java, Flash+Java в сети есть описание этих связок.
|
|
| |
kadpxx | Дата: Вторник, 29 Апреля 2014, 12:54 | Сообщение # 4 |
уже был
Сейчас нет на сайте
| Доброго времени суток! У меня вопрос пытаюсь сделать регистрацию и вход в игру но после того и другого вылазит ���������� ����� � голову поломал уже почему не проходит регистрация что не так?
|
|
| |
Assasin | Дата: Пятница, 02 Мая 2014, 15:10 | Сообщение # 5 |
web-coder
Сейчас нет на сайте
| Цитата Все создаваемые файлы должны быть в формате UNIX и в кодировке UTF-8 без BOM.
|
|
| |
Folleah | Дата: Пятница, 02 Мая 2014, 15:33 | Сообщение # 6 |
Архитектор
Сейчас нет на сайте
| Молодец парень... Но я бы посоветовал для разработки Canvas + JavaScript + Node JS (одинаковый ЯП в бэкэнде и фронтэнде упростит разработку новичкам), ибо это самая современная связка (флеш устарел).
Сообщение отредактировал Folleah - Пятница, 02 Мая 2014, 15:34 |
|
| |
Ovak | Дата: Вторник, 24 Июня 2014, 17:11 | Сообщение # 7 |
уже был
Сейчас нет на сайте
| По видео БД разбиратся "не фонтан". Эффективнее было сделать схему: "9 таблиц: battle скрин battle_log скрин"Добавлено (24.06.2014, 17:11) --------------------------------------------- Жесть. Наименований данных на видео не разобрать. Допустишь ошибку и все переписывать придется. Урок на твердую двойку
|
|
| |
Assasin | Дата: Понедельник, 21 Июля 2014, 17:35 | Сообщение # 8 |
web-coder
Сейчас нет на сайте
| Ovak, при качестве видео 720p все замечательно видно.
|
|
| |
abrar | Дата: Пятница, 29 Августа 2014, 17:27 | Сообщение # 9 |
уже был
Сейчас нет на сайте
| Невозможно найти БД что то тут не так((
Сообщение отредактировал abrar - Пятница, 29 Августа 2014, 17:53 |
|
| |
ASYS | Дата: Воскресенье, 19 Июля 2015, 16:09 | Сообщение # 10 |
уже был
Сейчас нет на сайте
| помогите, поле регистрации, да самого входа, после нажания кнопки вход или зарегистрироваться выходит вот это.
Warning: include(inc/db.php) [function.include]: failed to open stream: No such file or directory in Z:\home\localhost\tgame\reg.php on line 4
Warning: include() [function.include]: Failed opening 'inc/db.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\localhost\tgame\reg.php on line 4
Fatal error: Class 'db' not found in Z:\home\localhost\tgame\reg.php on line 5
что не так?
|
|
| |
Trimmer | Дата: Понедельник, 04 Июля 2016, 00:44 | Сообщение # 11 |
уже был
Сейчас нет на сайте
| После Напасть выводит такие ошибки...
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 64
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 57
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 64
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 57
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 64
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 57
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 64
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 57
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in X:\home\moykki.ru\www\inc\battle.php on line 64
Warning: Division by zero in X:\home\moykki.ru\www\inc\battle.php on line 227
Warning: Division by zero in X:\home\moykki.ru\www\inc\battle.php on line 227
Warning: Division by zero in X:\home\moykki.ru\www\inc\battle.php on line 227
Warning: Division by zero in X:\home\moykki.ru\www\inc\battle.php on line 227
Warning: Division by zero in X:\home\moykki.ru\www\inc\battle.php on line 227
Потом грузится долго лог и с верху это...
Fatal error: Maximum execution time of 30 seconds exceeded in X:\home\moykki.ru\www\module\battle.php on line 78
if ($i == 4 && $_p == $p1) { # Если список карт первого игрока выведены и просматриваются карты первого игрока, то переключает на вывод списка карт второго игрока
эта строка на линии battle.php on line 78
Сообщение отредактировал Trimmer - Понедельник, 04 Июля 2016, 01:02 |
|
| |
DonMoscow | Дата: Пятница, 15 Июля 2016, 20:20 | Сообщение # 12 |
уже был
Сейчас нет на сайте
| Ребята, застрял на регистрации. Создал базу, таблицы. Далее в папке tgame руками создал папки,а в них файлы с помощью нотпада ++. в файлах ( в которые копировал код) ставил формат UNIX и в кодировку UTF-8 без BOM. Код копировал полностью (безрезультатно) и с удалением комментариев (которые написаны коричневым цветом) (тоже безрезультатно). Денвер пишет что: Внутренняя ошибка сервера
"Сервер обнаружил внутреннюю ошибку или некорректное и не смог выполнить ваш запрос. Подсказка Денвера Вероятнее всего, скрипт, который запускает данная страница, не смог корректно выполниться"Добавлено (15 июля 2016, 20:20) --------------------------------------------- Проблема решена, удалил из файла .htaccess строку tgame.localhost. Чем чревато?
|
|
| |
bolk1234 | Дата: Пятница, 15 Июля 2016, 23:22 | Сообщение # 13 |
уже был
Сейчас нет на сайте
| Trimmer попробуй php 5.2 или более ранний.у меня подобное было на 5.4
|
|
| |
Crowley | Дата: Понедельник, 14 Ноября 2016, 15:20 | Сообщение # 14 |
уже был
Сейчас нет на сайте
| Помогите плз, уже 2 дня как мучаюсь с формами кодов регистрации!При входе пишет Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\tgame\index.php on line 11.При регистрации Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\tgame\reg.php on line 12
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\tgame\reg.php:12) in Z:\home\localhost\www\tgame\reg.php on line 17.Пробовал перестраивать коды:Ошибки ушли, но в бд не появлялись данные указанные при регистрации.Сделал файл save.php-наконец-то регистрация заработала, однако при входе пишет Пользователь не найден...1 ошибки появились при полном копировании материалов с этой темы.2-ые при редактировании кода.На данный момент у меня есть 5 файлов. Содержимое save.php
Код <?php session_start(); # Подключается сессия mysql_connect ("localhost","root",""); mysql_select_db ("map_db"); if (isset($_POST['login'])) { $login = $_POST['login']; } //Забиваем введённый логин в переменную if (isset($_POST['password'])) { $password=$_POST['password']; }//Забиваем введённый пароль в переменную
if (empty($login) or empty($password)) //Если юзер не ввёл логин либо пароль выдаём ошибку { echo "<script>alert('Заполните поля логина и пароля!' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; location.href='reg.php';</script>"; exit; } if (!preg_match("|^[a-z_-]+$|i", $login)) //Проверяем логин на корректность {echo "<script>alert('Запрещённые симбволы в логине!!' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; location.href='reg.php';</script>"; exit;} if (!preg_match("|^[a-z 0-9]+$|i", $password)) //проверка пароля {echo "<script>alert('Запрещено использовать русские буквы в пароле!!' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; location.href='reg.php';</script>"; exit;} $query = "SELECT * from users where login = '$login'"; //Вытаскиваем данные с введённым логином $result = mysql_query($query) or die("Query failed : " . mysql_error()); $num_rows = mysql_num_rows($result); if( $num_rows == 0){ //Проверяем есть ли пользователи с таким же логином или айпи $query56 = "INSERT INTO users(login,password,email,position)"; //Если нет забиваем пользователя! $query56.= "Values ('$login','$password','$email','$position' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> "; $result56 = mysql_query($query56) or die("Query failed : " . mysql_error()); print("Юзер: $login, добавлен в базу!"); } else { //Если такой юзер есть либо такой айпи выдаём ошибку print("<script>alert('Данный логин занят, либо с вашего ip-адреса была произведена регистрация!' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; location.href='reg.php';</script>"); } mysql_close(); //Обрываем соединение с базой
?> Содержимое index.php
Код <? session_start(); # Подключается сессия mysql_connect ("localhost","root",""); mysql_select_db ("map_db"); include('inc/db.php' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; //Подключаем соединение с базой (создадим по позже)
if ((!empty($_POST['login'])) && (!empty($_POST['password'])) ) // проверяем введены ли логин с паролем { session_start();{ //стартуем сессию
$login = $_POST['login']; //Добавляем в переменную, введённый логин $password = $_POST['password']; //Добавляем в переменную, введённый пароль $_SESSION['login'] = $login; //Добавляем в сессию логин $_SESSION['password'] = $password; //Добавляем в сессию пароль
}
$query = "SELECT * FROM users where login='$login' and password='$password'"; // Пытаюсь вытащить данные с введённым логином и паролем $result = mysql_query($query) or die("Query failed : " . mysql_error()); //Забиваю получившийся результат в переменную resilt $line = mysql_fetch_array($result); // А result в line $prowerka = $line["login"]; //Вытащеный логин забиваю в переменную if( $prowerka === $login ) //Если он подходин введённому логину значит вход удался!
{ print ('<SCRIPT>location.href="game.php";</SCRIPT>' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; //При удачном входе телепортируем пользователя на страницу с покемонами } else print('<font color="red">Логин или пароль не верны!</font>' <img rel="usm" src="/SML/wink.gif" border="0" align="absmiddle" alt=";)" /> ; //Иначе выводим ошибку } mysql_close(); //Дальше идёт html код странички которая отображает вход echo
'
<html> <head> <title>Название игры</title>
</head>
<body bgcolor="lightgrey"> <td width="190" height="300"><FORM name=log_in onclick="pusk()" method=post> Логин: <br> <input type="text" name="login" class="input"><br> Пароль: <br> <input type="password" name="password" class="input"><br> <p> <INPUT type=submit value=Вход class="input"><p><br> <a href="reg.php">Регистрация</a> </body> </html>';
?>
Содержимое reg.php
Код <html> <TITLE>Название игры - Регистрация</TITLE> <body bgcolor="lightgrey"> <center> <form id="form" class="blocks" action="save.php" method="post"> Логин: <br><input type="text" class="text" name="login"/> <br> Пароль: <br><input type="password" class="text" name="password"/><br> Email: <br><input type="text" class="text" name="email"/><br> <input type="submit" class="btn" value="Регистарация" /> </form> </body></html> Содержимое db.php(кроме названия бд) и game.php не изменял.В чём ошибка?
Hello world
|
|
| |
titikaka | Дата: Воскресенье, 20 Ноября 2016, 10:32 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| А можно еще проще. Это посмотреть курсы по написанию карточной (желательно браузерной) игры (так как сейчас браузерки необычайно популярны) с использованием языков программирования чисто для написания карточной браузерной игры. Например вот здесь www.superplayers1.ru Или скачать движок например unity 3d. Чтобы б вы не искали скачать можно здесь https://unity3d.com/ru/get-unity/download (--это их оф сайт) А посмотреть их инструктаж по unity 3d вот здесь https://unity3d.com/ru/learn
titikaka001
Сообщение отредактировал titikaka - Воскресенье, 20 Ноября 2016, 10:32 |
|
| |
Dekstar | Дата: Понедельник, 24 Апреля 2017, 21:31 | Сообщение # 16 |
частый гость
Сейчас нет на сайте
| Спасибо за урок! А исходника нету? Хотя бы БД.
|
|
| |
skokovrov | Дата: Пятница, 25 Января 2019, 15:25 | Сообщение # 17 |
уже был
Сейчас нет на сайте
| очень полезненько, надо на досуге заморочиться
перила из нержавейки
|
|
| |
|