Как сделать игру (шаг третий)

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

Какие же части игры необходимо реализовать в прототипе? Это довольно сложный вопрос даже для опытного разработчика. Бывает так, что на первый взгляд не существенная деталь в последствии становится существенной проблемой. А в прототипе ее попросту не делали. Но т.к. заранее все такие вещи предсказать не возможно — придется полагаться на здравый смысл и собственное чутье.

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

Для нашего проекта мы в первую очередь создадим механику генерации игрового поля, удаление одноцветных фигур и переключение гравитации. Для этого нам понадобится пустой GameObject Game, префаб из обычной сферы Sphere и 2 скрипта с такими же названиями. Скрипт Sphere привяжем к префабу и добавим следующий функционал:

private int id;
	
public int ID{
	get{return id;}
	set{id = value;}
}

void OnMouseDown (){
	GameObject.Find("Game").GetComponent<Game>().Click(id);
}

Теперь наш префаб имеет переменную для ИД, публичную переменную для записи и чтения этого ИД, а также при клике на сферу в несуществующую ещё функцию будет отправляться ИД нажатого объекта.

Скрипт Game тоже привяжем к одноименному объекту. Заведём публичную переменную Object SpherePrefab, в которой укажем наш префаб. И добавим массив для хранения объектов GameObject[] Spheres. Для создания сфер на игровом поле будем использовать функцию:

void SetSphere (Vector3 pos, int id) {
	Object temp = Instantiate(SpherePrefab, pos, Quaternion.identity);
	Spheres[id] = (GameObject)temp;
	Spheres[id].GetComponent<Sphere>().ID = id;
}

Теперь можно завести переменные для количества позиций на экране и начальных координат:

private int countX = 10;
private int countY = 9;
private float constL = -2.6f;
private float constD = -4f;

void Start () {
	Spheres = new GameObject[countX*countY];
	int _id = 0;
	
	for (int i=0; i<countX; i++)
	for (int j=0; j<countY; j++)
	{
		SetSphere(new Vector3(constL + i, constD + j,0),_id);
		_id ++;
	}
}

С этого момента прототип обретает первую функциональность. При его запуске теперь будет не просто собранное из простых фигур игровое поле, а поле с игровыми объектами.

Для хранения цвета создадим массив int[,] sColor, который будет хранить цветовой код. И переменную Color SphereColor (int i), которая будет возвращать необходимый цвет. В функции Start добавим стоку sColor = new int[countX,countY]; и вызов функции генерации цвета:

void Generator (){
	for (int i=0; i<countX; i++)
	for (int j=0; j<countY; j++)
	{
		sColor[i,j] = Random.Range(1, 5);
	}
}

Чтобы сферы на игровом поле стали цветными допишем функцию Update. В результате, любое изменение в массиве sColor будет сразуже отображаться на экране:

void Update () {
	for (int i=0; i<countX; i++)
	for (int j=0; j<countY; j++)
	{
		Spheres[i*countY+j].renderer.material.color = SphereColor(sColor[i,j]);
	}
}

Теперь пришел черёд дописать функцию Click и реакцию, на нажатие по сфере:

public void Click(int id){
	int x = id / countY;
	int y = id % countY;
	if (sColor[x,y] !=0) 
	if (NotOne(x, y, sColor[x,y])){
		DelSphere(x, y, sColor[x,y]);
	}
}
	
bool NotOne(int x, int y, int type){
	bool temp = false;
	if (x > 0) if (sColor[x-1,y] == type) {temp = true;}
	if (x < countX-1) if (sColor[x+1,y] == type) {temp = true;}
	if (y > 0) if (sColor[x,y-1] == type) {temp = true;}
	if (y < countY-1) if (sColor[x,y+1] == type) {temp = true;}
	return temp;
}
	
void DelSphere(int x, int y, int type){
	if (sColor[x,y] == type){
		sColor[x,y]  = 0;
		if (x > 0) {DelSphere (x-1,y,type);}
		if (x < countX-1) {DelSphere (x+1,y,type);}
		if (y > 0) {DelSphere (x,y-1,type);}
		if (y < countY-1) {DelSphere (x,y+1,type);}
	}
}

Осталось только сделать падение шариков вниз и смещение к центру. Т.к. падение более приоритетно, то сделаем для него счетчик. А смещение будем делать только после остановки всех фигур.

int Grav(){
	int temp = 0;
	for (int x = 0; xy<countX; x++)
	for (int y = 0; yy<countY; y++)
	{
		if (y < countY-1){
			if ((sColor[x,y] == 0)&&(sColor[x,y+1] !=0)){
				sColor[x,y] = sColor[x,y+1];
				sColor[x,y+1] = 0;
				temp++;
			}
		}
	}
	return temp;
}
	
void Centr(){
	for (int x = 1; x<5; x++)
		if (sColor[x,0] == 0) {
			for (int y= 0; y<countY; y++){
				sColor[x,y] = sColor[x-1,y];
				sColor[x-1,y] = 0;
			}
		}	
	for (int x = 5; x<9; x++)
		if (sColor[x,0] == 0) {
			for (int y= 0; y<countY; y++){
				sColor[x,y] = sColor[x+1,y];
				sColor[x+1,y] = 0;
			}
		}
}

И добавим в Update строку if (Grav() == 0) {Centr();};

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

Прототип ColorJunction (0 Загрузок )

About

12 516 thoughts on “Как сделать игру (шаг третий)

  1. Мы предлагаем Вам только лучшие сорта по выгодным ценам! Вы можете Купить Люцерну для коров в Алматы по выгодным для Вас Ценам. Мы гарантируем свежесть и чистоту каждой партии нашей продукции. У нас вы найдете как свежие тюки, так и гранулированную люцерну для удобства хранения и использования. Доверьтесь нам для обеспечения вашего скота высококачественным кормом – заказывайте прямо сейчас!

  2. Уведомление: grandpashabet
  3. Купить срочно диплом о среднем образовании — — это шанс оперативно завершить документ об образовании на бакалаврской уровне лишенный лишних забот и расходов времени. В городе Москве доступны различные вариантов настоящих дипломов бакалавров, обеспечивающих удобство и легкость в процессе.

  4. Уведомление: grandpashabet
  5. Внутри городе Москве приобрести свидетельство – это практичный и быстрый способ завершить нужный запись без избыточных проблем. Множество компаний предлагают услуги по изготовлению и продаже дипломов разных образовательных институтов — https://prema-diploms-srednee.com/. Выбор дипломов в Москве велик, включая документы о высшем уровне и среднем учебе, аттестаты, свидетельства вузов и университетов. Основное достоинство – способность получить диплом Гознака, гарантирующий подлинность и высокое качество. Это обеспечивает особая защита против фальсификаций и позволяет применять аттестат для разнообразных задач. Таким путем, заказ свидетельства в столице России становится безопасным и экономичным вариантом для данных, кто желает достичь успеху в трудовой деятельности.

  6. At this time it seems like BlogEngine is the top blogging platform out there right now. (from what I’ve read) Is that what you are using on your blog?

    bitcoin price usd

  7. Уведомление: grandpashabet
  8. I feel that іѕ among the so much vital information for me.
    And i’m ցlad studying your article. But want to remark
    on some normal issueѕ, Thee web site stylle is perfect, the articles is in reality nice : D.
    Juᥙst right task, cheers

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

  10. Уведомление: child porn
  11. На территории Москве заказать свидетельство – это комфортный и экспресс метод завершить нужный запись лишенный дополнительных трудностей. Большое количество компаний предлагают услуги по созданию и торговле дипломов различных учебных заведений — diplom4you.net. Ассортимент дипломов в Москве большой, включая документация о академическом и среднем ступени профессиональной подготовке, документы, дипломы вузов и университетов. Главное достоинство – возможность получить свидетельство Гознака, подтверждающий истинность и высокое качество. Это обеспечивает уникальная защита от фальсификаций и дает возможность использовать аттестат для различных целей. Таким путем, приобретение аттестата в столице России является важным достоверным и эффективным выбором для данных, кто хочет достичь успеха в сфере работы.

  12. Attractive portion of content. I just stumbled upon your web site and in accession capital to assert that I get in fact enjoyed account your weblog posts. Anyway I’ll be subscribing for your augment and even I achievement you get entry to consistently quickly.
    crypto casino with no kyc

  13. We absolutely love your blog and find the majority of your post’s to be exactly I’m looking for. Does one offer guest writers to write content for you personally? I wouldn’t mind composing a post or elaborating on a number of the subjects you write with regards to here. Again, awesome blog!
    https://tinyurl.com/SquirtCamweb

  14. Внутри городе Москве заказать диплом – это удобный и экспресс метод завершить нужный запись без избыточных проблем. Разнообразие организаций предлагают помощь по изготовлению и реализации дипломов разных учебных заведений — https://diplomkupit.org/. Ассортимент дипломов в Москве большой, включая бумаги о высшем и среднем профессиональной подготовке, аттестаты, дипломы колледжей и вузов. Основной преимущество – возможность получить аттестат Гознака, гарантирующий достоверность и высокое качество. Это предоставляет особая защита от подделки и позволяет использовать свидетельство для различных задач. Таким путем, приобретение свидетельства в Москве является важным безопасным и эффективным решением для тех, кто желает достичь успеха в сфере работы.

  15. Уведомление: porn
  16. For the past few days I’ve been a dedicated fan of this amazing site, they deliver superb content for their community. The site owner has real talent engaging audiences. I’m thrilled and hope they maintain their magnificent efforts.

  17. When I initially commented I clicked the «Notify me when new comments are added» checkbox and now each
    time a comment is added I get several emails with the same comment.
    Is there any way you can remove me from that service? Cheers!

  18. Получение образовательного документа необходимо для трудоустройства на высокооплачиваемую работу. Иногда случаются ситуации, когда диплом, полученный ранее неприменим для выбранной трудовой сферы. Покупка диплома в Москве решит эту проблему и предоставит блестящую перспективу — https://kupit-diplom1.com/. Существует множество причин, приводящих к приобретение образовательного документа в Москве. После некоторого времени в карьере внезапно может потребоваться университетский диплом. Работодатель может изменить требования к сотрудникам и принудить вас сделать выбор – диплом или увольнение. Полный дневной график учебы требует больших затрат времени и сил, а обучение на заочной форме — потребует средства для проведения экзаменов. В подобных случаях более выгодно приобрести готовую копию. Если у вас уже есть опыт в выбранной сфере и усвоили необходимые навыки, не имеет смысла затрачивать время на обучение в университете. Плюсы приобретения диплома включают скорое производство, полное совпадение с оригиналом, приемлемую стоимость, уверенность в трудоустройстве, возможность выбора оценок и удобную доставку. Наша компания обеспечивает возможность всем желающим получить желаемую профессию. Цена изготовления документов достойна, что делает доступным этот вид услуг для всех.

  19. Ищете возможность купить диплом Вуза? Мы готовы помочь вам! Обращайтесь к нам для приобретения различных образовательных документов. Посетите наш сайт, чтобы https://diplom1.org/ с доставкой по всей России. Без предоплаты!

  20. Ищете возможность купить диплом Вуза? Мы готовы помочь вам! Обращайтесь к нам для приобретения различных образовательных документов. Посетите наш сайт, чтобы https://diplom1.org/ с доставкой по всей России. Без предоплаты!

  21. Наша компания extern-diplom.com, специализирующаяся на дипломах Гознака, предлагает https://extern-diplom.com/ их со скидкой и бесплатной доставкой в ваш город.

  22. Если вы хотите найти,https://extern-diplom.com/ по доступной цене, вы можете найти наш сайт ‘https://extern-diplom.com/’ в результате поиска в интернете. На нашем сайте вы сможете выбрать и приобрести диплом любого Вуза в РФ.

  23. На нашем сайте http://vuzdiploma.ru/ вы можете заказать и получить легальный диплом института. Мы гарантируем надежность и выгодные условия.

  24. Many thanks for putting this together! Much appreciated.
    На нашем сайте http://e-diplom.biz вы можете заказать и получить легальный диплом института. Мы гарантируем надежность и предлагаем выгодные условия.