Если вы сможете заявить о себе перед различными анти-кафе, барами, магазинами комиксов/манги и фан-клубами, то некоторую порцию клиентов вы получите. Что до массового потребителя, то выше верно подмечено - в СНГ с этим могут возникнуть проблемы. Здесь большую роль сыграют ваши навыки в бизнесе, рекламе и работе с медиа. Ninja Slayer - 2D Physics Puzzle [cancelled]
1) Используйте bb-код для оформления исходных текстов, читать невозможно. 2) Что это за дичь?
Код
// Не создавать новых врагов, пока не уничтожены старые if (currentNumberOfEnemies <= 0) // <-- начиная отсюда waveNumber++; waveText.text = "WAVES: " + waveNumber; { // точно не перепутали?
3)
Код
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class GameController : MonoBehaviour {
// Создание переменной «враг» public Transform enemy; // Временные промежутки между событиями, кол-во врагов public float timeBeforeSpawning = 1.5f; public float timeBetweenEnemies = 0.25f; public float timeBeforeWaves = 2.0f; public int enemiesPerWave = 1; private int currentNumberOfEnemies = 0;
// Процедура уменьшения количества врагов в переменной public void KilledEnemy() { currentNumberOfEnemies--; }
// Use this for initialization void Start () { StartCoroutine(SpawnEnemies()); }
// Update is called once per frame void Update () {
} // Появление волн врагов IEnumerator SpawnEnemies() { // Начальная задержка перед первым появлением врагов yield return new WaitForSeconds(timeBeforeSpawning); // Когда таймер истекёт, начинаем производить эти действия while (true) { // Не создавать новых врагов, пока не уничтожены старые if (currentNumberOfEnemies > 0) continue;
waveNumber++; waveText.text = "WAVES: " + waveNumber; float randDirection; float randDistance; // Создать 10 врагов в случайных местах за экраном for (int i = 0; i < enemiesPerWave; i++) { // Задаём случайные переменные для расстояния и направления randDistance = Random.Range(5, 25); randDirection = Random.Range(0, 45); // Используем переменные для задания координат появления врага float posX = this.transform.position.x + (Mathf.Cos((randDirection) * Mathf.Deg2Rad) * randDistance); float posY = this.transform.position.y + (Mathf.Sin((randDirection) * Mathf.Deg2Rad) * randDistance); // Создаём врага на заданных координатах Instantiate(enemy, new Vector3(posX, posY, 0), this.transform.rotation); currentNumberOfEnemies++; yield return new WaitForSeconds(timeBetweenEnemies); } // Ожидание до следующей проверки yield return new WaitForSeconds(timeBeforeWaves); } }
}
4) Уверены, что хотите использовать while (true) {} ? Хорошенько подумайте, ведь это можно сделать иначе. Подсказка: события, корроутины. Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Воскресенье, 29 Апреля 2018, 19:06
А про путина и блокчейн вы просто шутку не поняли, видимо это слишком локальные мемы, прошу извинить )
P.S> К сабжу вернусь позднее, с ответом на "для чего..." c:
Добавлено (28 Апреля 2018, 22:13) --------------------------------------------- P.S.S> Кстати, про веб 2.0. Здесь тоже сумбур, т.к. имелось ввиду далеко не данное понятие ) Молодежь обычно так называется все то, что приходит на замену старому. Ну, это так, к слову ) Поэтому как раз-таки полного соответствия современным тенденциям у GcUp нет :> (никого не хочу задеть или обидеть)
Эргалон, да, ты ведь получаешь полный доступ к терминалу системы по ssh. Иногда можно просить (чаще за доп. плату) уже настроенное окружение со всем необходимым, но сейчас существует docker (можешь про него почитать, используется повсеместно), который эту проблему решает очень лаконично. Ninja Slayer - 2D Physics Puzzle [cancelled]
Копипаста отседова (прошу не кидать тапки): FirstVDS(Россия, самый нищебродский стартерпак :D, 90 деревянных), Scaleway (Франция и Нидерланды, много мощнее, это уже солидная штучка 2.99EU), DigitalOcean (Европа, США, Южная Азия, мощная штучка, но уже ближе к продакшену, $5.00) Ninja Slayer - 2D Physics Puzzle [cancelled]
Vostrugin, ок, смотрите. Я не могу утверждать, как оплачивается нынешний хостинг, и гадать тем более, но могу заверить так - до недавнего времени была крутая штука Google Cloud. Почему была? Потому что сейчас РКН балуется и в свете последних событий это не самое надежное решение. Amazon - аналогично. За другие свободные решения я не шарю (имеется ввиду что-то с возможностью деплоя серверной части), кто-то может подсказать. Есть адекватные платные альтернативы (VPS / VDS), для разработки и первого прототипа они сойдут (а дальше уже будет оценена актуальность и предприняты дальнейшие решения). НЕ РЕКЛАМА, личный опыт: FirstVDS(Россия, самый нищебродский стартерпак :D, 90 деревянных), Scaleway (Франция и Нидерланды, много мощнее, это уже солидная штучка 2.99EU), DigitalOcean (Европа, США, Южная Азия, мощная штучка, но уже ближе к продакшену, $5.00). Я перечислил только те, что активно использовались в моей деятельности, естественно стоит провести поиск и найти мб более подходящие варианты.
Если вас интересует стоимость работы - это зависит от администрации ресурса, но имхо, когда мы говорим про OpenSource, то обычно всем контрибьюторам не заплатишь :'D Тут я некомпетентный собеседник, т.ч. оставляю это дело за администрацией )
P.S> Кстати, не ответил, кто заплатит за VPS: 1) администрация, если ей интересна идея; 2) первые контрибьюторы, если они хотят вдохнуть новую жизнь в сей ресурс; 3) недобродушные форумчане, которые хотят перемен; 4) спонсоры, если такие найдутся (этот пункт для галочки). Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Суббота, 28 Апреля 2018, 19:39
Vostrugin, если не приходит - я иду к вам на помощь! Берете вы такие фрейморк (а их сейчас пруд пруди). Самые популярные и стабильные - Laravel, Yii, Symfony, CodeIgniter (НЕ РЕКЛАМА) А потом бам-бам-бам, тройка команд, и вы уже подняли полноценное современное веб-приложение со встроенным Bootstrap и прочими ништяками, которое еще вдобавок имеет готовую архитектуру, вам остается лишь ее придерживаться и дополнять функционал. Форум? Первый запрос в гугле (Laravel). Да, как уже написали выше про Веб 2.0, он пришел давно и от него никуда не деться, мир идет вперед, а веб делает это в 2 раза быстрее (для фана можно последить за обновлением стандарта HTML5 или репозиторием nvm (хотя и это уже не модно :'DDD) ). Здесь нет слов про "неюзабельность/неработоспособность/"нинужоность". Действительно, мир таков, что то, что хорошо работает - пускай работает, но мы-то с вами все стало быть энтузиасты-первопроходцы?) (я на это искренне надеюсь) + мы с вами адекватные люди и понимаем, что "переход на новый движок, технологию, архитектуру, дизайн" это не дело коммита в мастер ) Естественно предлагается сделать новый бренч аля GcUp-v2.0-New-Age-MLG-NewWaveProgramming-DefineInclude-newPromise-Blockchain-ICO-VPN-RussianCommunity-Putin :>
Сумбурно, но, надеюсь, я смог изложить и донести до вас мысли "молодежи"
P.S> Чет форум вырезал фразу, но тут крч был текст про использование Git/SVN и Hooks deployment (что является здоровым современным методом ведения разработки не только в вебе, но и остальных сферах) Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Суббота, 28 Апреля 2018, 18:48
drcrack, хорошая аналогия, но 1) в рамках возможностей он конкурентоспособен, 2) в рамках инструментария нет. Если на нем нет на виду хороших проектов, то это еще не значит, что инструмент плохой, скорее инди-студии студии выбирают быстрый путь (старшие братья), а средне-крупные компании используют собственные решения (с нуля/на основе лицензированного CryEngine и т.д. (лишь пример) ). Но стоит заметить, что вы не узнаете ничего о реальной архитектуре движка, используя закрытые проекты. В этом главное преимущество open-source в рамках обучения. tohaad, Сообщество в ВК Переводы уроков Официальные коммьюнити с сайта движка GitHub для программиста всегда составляет альтернативную документацию (но на оф. сайте всегда можно найти актуальную документацию) Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Суббота, 28 Апреля 2018, 10:21
Прежде всего вам нужно определиться с целью данного проекта. Если это учебный проект для портфолио, то вопрос - была ли у вас компьютерная графика на вашем направлении? Если нет, то самым правильным (с точки зрения обучения) будет вариант работы с OpenGL / DirectX / Vulkan напрямую (на том же C++). Написав свой первый рендерер, поняв архитектуру типичного движка вам уже будет безразличен инструмент, большую массу на чаше весов уже будет занимать удобство использования, готовые фичи, либо предпочтения компании, в которой вы работаете. Главное, что это убережет вас в будущем от элементарных вопросов (это как начать решать дифуры не освоив матан -> очень плачевно).
Если же для вас важны результативность и скорость прямо сейчас -> вам напрямую дорога к Unity, UE, CryEngine. Очень интересные OpenSource решения: Cell Engine, Godot, DGLE. Последний - очень интересный и мощный инструмент от нашего соотечественника. К сожалению, его дальнейшее обновление и развитие под вопросом. Другой момент, что, при должных навыках программиста, вы без проблем его допилите под свои нужды. Godot - прекрасное решение отлично конкурирующее с братьями-старшими, имеет большое и активное коммьюнити, в том числе и русское. Cell - сырой, но прогрессирующий. Использовал для создания презентации (+ как упоминает сам автор, хорошо подходит для изучения архитектуры рендер-движка)
P.S> Из описанного вами вообще не рекомендую выбирать, это либо legacy, либо просто весьма экзотический продукт + как уже упомянули - Ogre3D это чисто рендерер. P.S.S> Если вы еще не работали с сетью и имели ввиду MMORPG (если уж посмотрели на Realm Crafter), то настоятельно не рекомендую сразу начинать этим заниматься (сетью). Сперва стоит поработать с сокетами напрямую, изучить механизм работы с сетью, потом попробовать, например, ENet, почитать о RakNet. Но опять же, если вы все-таки пойдете по легкому пути, то в вышеупомянутых Unity, Godot и т.д. работа с сетью уже налажена, нужно будет только изучить док-цию (но опять же аналогия с матаном и дифурами - я не советую такой путь) P.S.S.S> А еще, т.к. вы упомянули про спортивное программирование (== вы пишете нечитабельный в продакшене код), то советую углубиться в изучение паттернов проектирования и взять или написать свой на основе другого стайлгайд. Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Пятница, 27 Апреля 2018, 20:17
Вот такие вопросы к порталу. Быстрым поиском по теме (первые две и последние две страницы по слову ucoz) подробностей не выяснил. Почему до сих пор используется uCoz? Разве есть еще какие-то преимущества перед остальными технологиями? Проект уже задумывался о переходе на адекватный веб и мб новые фреймворки? Я не думаю, что перенос дизайна сайта составит проблему. Проблема будет с форумом и БД, но и она вполне себе может быть спокойна выгружена и изучена (старый линк, я хз) Операция итак очевидно как выполняется, но вот есть несколько первых выдач из гугла: клац-1 и клац-2. Или я слоупок и сайт уже давно ушел с юкоза на свои VDS и бла-бла-бла?
Ну, собственно говоря, от этого ничего не меняется кроме отсутствия gravity. Это позволяет использовать еще один способ:
Код
// Необходимо задать friction, либо ручками прописать в step direction = other.direction; // либо же 90, если seu вертикальный онли direction = (direction + 180) mod 360; // не лучший вариант, но все же direction = point_direction(collision_x, collision_y, x, y); // Иногда может понадобиться такой вариант, 1 и 2 аргументы зависят от подхода к столкновениям speed = POWER; // Некоторая константа или функция // Кстати, если вертикальный seu, то можно сделать еще проще: hspeed = 0; vspeed = -POWER;
Примерный код для Step (не эталон):
Код
var movement_x, movement_y; // исходные значения направления и скорости движения, к которым стремится obj_enemy if ( abs(movement_y - vspeed) > EPS ) { // Не делаем лишних вычислений, EPS - константа, например, 1e-10 vspeed += (movement_y - vspeed) * DELAY / room_speed; // DELAY - время в секундах на восстановление, можно поэкспериментировать с поведением анимации, т.к. сейчас используется "ease-out" метод } else { vspeed = movement_y; } if ( abs(movement_x - hspeed) > EPS ) { // Не делаем лишних вычислений hspeed += (movement_x - hspeed) * DELAY / room_speed; } else { hspeed = movement_x; }
P.S> Кстати, не помню, но если hspeed и vspeed автоматически не вычисляются по известным speed и direction, то юзайте:
Код
hspeed = lengthdir_x(speed, direction); vspeed = lengthdir_y(speed, direction); // либо так direction = point_direction(0, 0, hspeed, vspeed); // либо arctan2(vspeed, hspeed) speed = point_distance(0, 0, hspeed, vspeed); // либо sqrt( sqr(hspeed) + sqr(vspeed) )
gemcd, с GcUp все настолько плохо, что здесь нет людей способных ответить на банальщину?... (а вообще не лучший способ продвижения сайта) Xmaster, obj_enemy, столкновение с пулей (объект):
Код
// Первый вариант, предполагается, что для obj_enemy заданы gravity и friction, либо имеется их ручной аналог в Step vspeed = -FACTOR; // FACTOR - некоторое значение, "высота подлета", может быть константой, либо же инлайн-функцией, если необходимо hspeed = sign(other.hspeed) * other.speed / DIVIDER; // DIVIDER - делим на коэффициент, т.к. скорость пули как правило много выше необходимой для "импульса", либо же sign(other.hspeed) * CONST, если дальность не зависит от скорости пули // Второй вариант, использование встроенной физики: [url=https://docs.yoyogames.com/source/dadiospice/002_reference/physics/forces/physics_apply_impulse.html]physics_apply_impulse[/url] physics_apply_impulse(x, y, other.x * FACTOR, other.y * FACTOR); // FACTOR - константа, функция или other.speed / DIVIDER // Третий вариант предполагает использование собственной реализации физики (изменение x и y, а также постепенное затухание вектора импульса) // Крайне не рекомендуется impulse_x = sign(other.hspeed) * other.speed / DIVIDER; impulse_y = -FACTOR; // В степ должны быть операции по изменению x += impulse_x и y += impulse_y, и логика работы с вектором импульса
Это если у вас пуля - объект. В реальности так не делают, вернее говоря - огнестрельные снаряды с высокой скоростью не являются объектами. Почему? Накладные расходы, эффект "проскакивания" и т.п. obj_shootable, Keypress, step, whatever u want:
Код
var shoot_x, shoot_y; shoot_x = ...; shoot_y = ...; with (obj_enemy) { if ( collision_line(other.x, other.y, shoot_x, shoot_y, id, false, false) != noone && collision_line(other.x, other.y, x, y, obj_obstacle, false, false) == noone ) // для полного счастья вместо x и y должна быть точка пересечения прямой и маски объекта { physics_apply_impulse(x, y, shoot_x, shoot_y); // или любой другой метод } }
Насмотревшись Игру престолов и наигравшись в M&B, в свое время начал нечто похожее на данный проект х) Идея кажется весьма интересной, но главное не переборщить с "усложнением" и фичами. Стоит не забывать, что сейчас популярен интуитивный user-friendly геймплей, чего весьма сложно добиться в играх такого типа. Если это учебный проект, то можете попробовать разобраться с p2p, UPnP и blockchain, нынче популярно, а главное - полезно (а еще это позволит игре жить, ведь ваш сервер будет далеко не вечным) ) Успехов в реализации! Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Вторник, 24 Апреля 2018, 20:05
DokBarzini, чувак, коли уж ты пишешь про важность сюжетной составляющей, сравнивая Мафию и GTA, говоришь как он (сюжет) важен на фоне остального, то не противоречишь ли ты сам себе, так свободно перечисляя фичи, которые "должны присутствовать в проекте"? Если ты хочешь "рассказать сперва свои истории" - расскажи, это легко устроить. Ты можешь начать как с обычных текстовых квестов, так и с интерактивных, если не поленишься и попробуешь изучить хоть какой-нибудь инструмент из ныне доступных (а их сегодня сотни достойных, в свободном доступе). Обычно незнакомые люди присоединяются к тем командам, у которых есть на руках хоть какой-то внятный прототип, который емко и лаконично показывает, чего конкретно хотят создатели от этого проекта. "Идеи для реализации" начинаются с содержательной составляющей и БАЗОВОГО геймплея, а не набора кусков и фич, выдернутых из того, что приглянулось.
1) Этот человек точно знает чего он хочет и какие навыки у него для этого имеются, а главное - в каком порядке и как их применять. 2) Он потратил на этот проект более 5 лет своего времени, причем не в тупых раздумиях и генерации идей, а действуя. 3) Чеваррия прежде всего геймдизайнер и художник, что дает ему большие возможности для дальнейшего роста и развития, получения новых навыков (анимация, 3D-моделирование, дизайн ландшафта и т.д.). D&D, визуальное программирование в настоящее время хорошо развиты, что позволяет в большинстве случаев не прибегать к написанию игровых сценариев/логики. Автор неоднократно упоминает, что во многом ему помогали "гайды" и коммьюнити UE4, что как бы намекает... 4) Творческие люди - они творческие во всем. Это позволяет находить необычные решения и решать проблемы с тем инструментарием, что имеется, а когда нужно - дополнительно изучаемым. 5) До начала разработки AQP City Чеваррия уже имел опыт разработки менее крупных проектов, где мог получить много драгоценного опыта.
P.S> Когда-нибудь ты освоишься в геймдеве не как геймер, а как разработчик. Но сколько на это потребуется времени зависит от того, как хорошо ты умеешь прислушиваться к остальным (а главное - фильтровать информацию и "переваривать ее"). И еще... ГЕЙМЕР !== ГЕЙМДИЗАЙНЕР. Второй, как правило, выходец из разработчиков, у которого за спиной уже немало готовых с разной степенью успешности проектов. Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Вторник, 17 Апреля 2018, 14:43
В 0 индексе хранится вопрос, в 1-[answers_count] хранятся ответы, в последнем - индекс правильного ответа. Функция generate_questions - заполнение массива, просто для примера заполняет вопросы на сложение двух чисел. Выбор ответа осуществляется клавишами 1-9, для простоты.
P.S.> Пример написан в GM8, но проблем с портированием на студию возникнуть не должно, нужна ведь только идея, верно?) P.S.S.> В студии имеется стэк, для полного профита можно использовать его и написать хороший генератор, юзающий определенный пул вопросов и заполняющий стэк/очередь/небо/Аллаха. Другой вариант - использовать shuffle из grid / написать свой, который будет перемешивать массив индексов вопросов, чтобы получить случайную последовательность. Ninja Slayer - 2D Physics Puzzle [cancelled]
Сообщение отредактировал Abel399 - Суббота, 13 Января 2018, 21:46