Четверг, 18 Апреля 2024, 16:46

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум игроделов » Ваши проекты » Идеи для реализации » Sea Battle 3D [Gamiron #12] (Морской бой 3D)
Sea Battle 3D [Gamiron #12]
KempstonДата: Вторник, 14 Июня 2016, 12:18 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Название: Sea Battle 3D (Морской бой 3D)
Графика: 3D, WebGL
Движок: Three.js, Cannon.js
Платформы: web, любая локально

Описание:
3D, вид от первого лица. Уровни представляют собой залы средневекового замка. В центре каждого зала находятся ячейки 9x9 в форме большой металлической решетки, куда надо бросать разноцветные мячи. Если попадаем пятью мячами одного цвета в ряд, то под этими мячами открываются люки, и мячи проваливаются. За это получаем очки.
Технология не совсем обычная. Мне удалось адаптировать Three.js к загрузке 3D моделей и текстур из локальной файловой системы без каких-либо дополнительных настроек браузера. Поэтому все будет запускаться в браузере как с сервера, так и с локального диска без сервера, просто по html-файлу. По идее – на любой ОС и браузере, которые поддерживают WebGL.

UPD.
Поменялась концепция, и теперь игра называется "Морской бой 3D". Старое название удалено: Medieval Lines (Средневековые линии).
Новое описание игры:

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


Сообщение отредактировал Kempston - Понедельник, 04 Июля 2016, 18:29
PiFaGoRichДата: Вторник, 14 Июня 2016, 12:22 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Kempston, Из описания не совсем понятно, как тема конкурса "Размер имеет значение" отражена в игре. Очень хотелось бы понять.
KempstonДата: Вторник, 14 Июня 2016, 12:29 | Сообщение # 3
почетный гость
Сейчас нет на сайте
PiFaGoRich, да, с этим пока проблема. Просто пока мне пришла в голову сама идея игры. И я в любом случае сделаю эту игру, на конкурс или нет. Но я еще буду думать над тем, что еще добавить в графику или лучше в геймплей, чтобы отразить тему конкурса. Это была пока только основная идея.
EvilTДата: Вторник, 14 Июня 2016, 12:34 | Сообщение # 4
Кочующий Художник
Сейчас нет на сайте
Kempston, было бы логично, чтобы были разные размеры шариков.
к примеру большими легче попасть и составить нужную комбинацию, но они не пролазят в люки. А мелкими наоборот сложнее попасть, но люки как раз для них. то есть ими желательно завершать уровень.


KempstonДата: Вторник, 14 Июня 2016, 12:41 | Сообщение # 5
почетный гость
Сейчас нет на сайте
EvilT, идея понятна. Подумаю... Только тогда уровень завершать большими. То есть, сначала набрать какое-то количество очков мелкими, которые будут проваливаться. А "добить" уровень большими, ведь они останутся на поле. Но тут появляется неприятная особенность. Игроку сначала надо будет бросаться мелкими, которыми сложнее. То есть, сразу самое сложное. Для нового игрока это не очень хорошо.

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


Сообщение отредактировал Kempston - Вторник, 14 Июня 2016, 12:44
PiFaGoRichДата: Вторник, 14 Июня 2016, 13:02 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Kempston, Получение очков это хорошо там, где есть возможность помериться очками с другими игроками или потратить их на что то в игре. Поощрение должно быть более интересным. Например, кидая шарики в решетку наша задача нарисовать один из элементов замка. выложив например линию, мы в этом разрушенном замке востановим колонну, выложив лесенку, отремонтируем лестницу в замке, выложив башню, воссоздадим разрушенную башню и.т.д. Шаблоны рисунка который нужно выложить шарами нарисованы на стенах замка, иногда не цельно, по кусочкам. Решетка может быть не только на полу, но и на потолке или стенах, может крутиться или пропадать, много что можно придумать. Очень важно показать игрокам, что эти вот бросания шариков он делает не ради бросания шариков, а для чего то большего.

Сообщение отредактировал PiFaGoRich - Вторник, 14 Июня 2016, 13:03
KempstonДата: Вторник, 14 Июня 2016, 13:14 | Сообщение # 7
почетный гость
Сейчас нет на сайте
PiFaGoRich, ну почему же, в классической Lines шарики составляют ради их уничтожения и получения очков, и пока никто не жаловался... Хотя, конечно, надо внести что-то более оригинальное.
Насчет очков - верно. Но я думаю, некоторое количество очков, которое надо набрать, будет открывать дверь в следующий зал. То есть, например, ключ от двери стоит 150 очков, а на втором уровне 250 и т.д.
Насчет того, чтобы выложить мячами фигуру. На поле 9x9 довольно сложно создать что-то интереснее линии или квадратика. Ну, может, вот, лесенку еще.
Я думал о том, что на некоторых уровнях будут в центре уже находиться разноцветные мячи. И надо будет к ним подстраивать до пяти те, которые для бросания, и таким образом уничтожать центральные. Центр будет помечен другим цветом. И дверь откроется, когда центр будет весь "провален". Как-то так. Ну как вариант разнообразия уровней.
В принципе, можно сделать поле побольше, то есть, клетки помельче. И выкладывать там разные фигуры. Я посмотрю, насколько это будет сложно, когда создам демку. И, кроме того, что делать с тем мячом, который мимо? Или в нужную клетку, но не того цвета? Просто проваливать его в люк и минусовать игрока?


Сообщение отредактировал Kempston - Вторник, 14 Июня 2016, 13:23
PiFaGoRichДата: Вторник, 14 Июня 2016, 13:24 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Kempston,
Цитата
И, кроме того, что делать с тем мячом, который мимо? Или в нужную клетку, но не того цвета? Просто проваливать его в люк и минусовать игрока?
А тут все просто. Как в боулинге. Мяч проваливается, затем появляется у игрока.
KempstonДата: Среда, 15 Июня 2016, 18:06 | Сообщение # 9
почетный гость
Сейчас нет на сайте


Набросал первую сцену. Не уделял пока особого внимания графике. Пока просто коробка - 4 стены, пол, потолок. И решетка. Делать пока ничего нельзя, только крутиться по сторонам.

Зато допилил загрузчик three.js, чтобы сцена запускалась из локального файла index.htm - обратите внимание на адресную строку на скрине. Текстуры и модели грузятся в виде скрипта:

Код
var el=document.createElement("script");
el.type="text/javascript";
el.src=url+'.json'; el.async=true;
document.getElementsByTagName("head")[0].appendChild(el);


И в парсере текстуры, картинка берется из формата base64:

Код

sloader.load(mat, material_url, function(mat,a) {
  if(a) {
    var image = document.createElement( 'img' );
    image.onload = function()  {
      var tex = new THREE.Texture( image );
      tex.needsUpdate = true;
      tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
      tex.anisotropy=5;
      mat[keyname] = tex;
      mat.needsUpdate = true;
    };
    image.src="data:image/gif;base64,"+a.replace(/^data:image\/(png|jpg);base64,/, "");
  }
});


Сообщение отредактировал Kempston - Четверг, 16 Июня 2016, 21:36
puksusДата: Среда, 15 Июня 2016, 19:35 | Сообщение # 10
Пчёлка Зоя
Сейчас нет на сайте
Ого, не знал, что на javaScript можно писать игры blink

https://vk.com/beezoya

Сообщение отредактировал puksus - Среда, 15 Июня 2016, 19:35
KempstonДата: Среда, 22 Июня 2016, 01:38 | Сообщение # 11
почетный гость
Сейчас нет на сайте
puksus, на javaScript даже целые 3D движки есть для этого - three.js, cannon.js и другие... :)

Добавлено (20 июня 2016, 16:12)
---------------------------------------------
Продолжаем разработку.
«Пролетая над...»

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

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

Добавил код в функцию updateWorld, которая обновляет мир в каждый момент времени, следующее:

Код
//очистка world по полю (field)
for (var i=0; i<field.length; i++) {
  if ( field[i][1]!=null ) {
    world.remove( field[i][1] );
  };
};
//добавление в world из field тех мячей, которые находятся под движущимися
var pm=0;
for ( var i=0; i<ballCache.length; i++ ){ //эти двигаются
  pm=getBallCellNo( ballCache[i][1].position ); //1..81
  if ( pm!=0 ) {
    if ( field[pm][1]!=null ) {
      world.add( field[pm][1] );
    };
  };
};

Здесь field – это хранилище объектов сцены, ballCache – те мячи, которые еще движутся, а getBallCellNo – простая функция, которая возвращает номер ячейки 1..81, в которой или над которой находится в данный момент мяч, по его координатам. То есть, берутся просто две координаты, x и z, без y (высоты). А затем, если в этой ячейке на поле лежит мяч, то он добавляется в физический движок. И так каждый раз – удаление всех, затем, добавление только тех, над которыми пролетает брошенный мяч.

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

Добавлено (22 июня 2016, 01:38)
---------------------------------------------
Творческие метания

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

И тут мне в голову пришла безумная идея переделать ее в морской бой, а точнее, сделать две игры, эту и морской бой. Идея такова, что бросание мячей (а оно уже полностью реализовано) превратить в выстрелы из пушки. Принцип будет отличаться от классического морского боя. Все корабли будут видны обоим игрокам, а смысл будет в том, чтобы, задав правильный угол наклона пушки, попасть в корабль противника. А это не так просто, поскольку мячи, то есть, ядра, летят по наклонной траектории. Корабли будут в 3D, деревянные, из времен пиратов. Можно будет переноситься на любое из своих судов от первого лица и производить выстрел из пушки. Игра пошаговая. Перед ходом можно будет также совершить маневр любым из своих кораблей.

Насчет темы конкурса. Собственно, ее не было как в первом варианте, так и во втором, так что...

Сообщение отредактировал Kempston - Понедельник, 20 Июня 2016, 16:33
xMoonGuarDxДата: Среда, 22 Июня 2016, 05:56 | Сообщение # 12
участник
Сейчас нет на сайте
Kempston, идея с морским боем выглядит интересной. Как вариант, можешь сделать разные виды ядер типо обычное ядро, картечь и т.д. Кстати, как вариант, при выстреле можно прикреплять камеру к ядру, что бы игрок летел вместе с ним, особенно если карта будет не маленькая. Но стоит сделать возможность отключения этой функции.
KempstonДата: Среда, 22 Июня 2016, 09:16 | Сообщение # 13
почетный гость
Сейчас нет на сайте
xMoonGuarDx, можно сделать пушки разного размера: маленькая стреляет прямо, но не сильно портит корабль, а большая стреляет по наклонной, но наносит большие разрушения.
А вот карту думаю сделать не большую, чтобы сохранялась ассоциация с классическим морским боем. То есть, корабли обоих противников - в пределах видимости, по разные стороны некой условной черты.
Про полет вместе с ядром - крутая экстремальная фишка. biggrin Можно будет сделать. Но не хотел бы я быть тем, кто летит на ядре...
xMoonGuarDxДата: Среда, 22 Июня 2016, 09:59 | Сообщение # 14
участник
Сейчас нет на сайте
Kempston, просто, если пользователь захочет "полетать" на ядре, не делай слишком быстрый полет, что бы в глазах не мельтешило smile
KempstonДата: Четверг, 23 Июня 2016, 00:03 | Сообщение # 15
почетный гость
Сейчас нет на сайте
xMoonGuarDx, я все же склоняюсь к тому, чтобы сделать реалистичную физику, иначе, как мне кажется, к нереалистичной игроку будет сложно приспособиться. Там будет траектория уже не та. Но, может быть, сделать как бы повтор в замедленном воспроизведении и уже от лица ядра. :D

Добавлено (23 июня 2016, 00:03)
---------------------------------------------
Итак. Легким движением руки игра про линии превращается... превращается... превращается в морской бой.



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


Сообщение отредактировал Kempston - Четверг, 23 Июня 2016, 00:05
TLTДата: Четверг, 23 Июня 2016, 01:37 | Сообщение # 16
Сейчас нет на сайте
Kempston, уточни у организатора, вероятно, нужно будет exe-файл сделать...

Дао, выраженное словами, не есть истинное Дао.
KempstonДата: Четверг, 23 Июня 2016, 18:35 | Сообщение # 17
почетный гость
Сейчас нет на сайте
TLT, к сожалению, это невозможно. Я умею писать только веб-приложения. А локальную версию могу сделать запуском index.html. Зато работает под любой ОС, где есть WebGL.
Создать exe, впихнув туда браузерный движок... Вроде бы, это даже возможно, но, кажется, без WebGL.

Добавлено (23 июня 2016, 18:35)
---------------------------------------------


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


Сообщение отредактировал Kempston - Четверг, 23 Июня 2016, 18:37
falcowareДата: Четверг, 23 Июня 2016, 19:19 | Сообщение # 18
старожил
Сейчас нет на сайте
Kempston, надо ехе. Но есть конверталки например флеша в ехе. тут тоже самое надо сделать.
KempstonДата: Четверг, 23 Июня 2016, 19:22 | Сообщение # 19
почетный гость
Сейчас нет на сайте
falcoware, я попробую что-нибудь придумать. C JS не так все просто, как с флешем.
owlondrugsДата: Четверг, 23 Июня 2016, 20:28 | Сообщение # 20
частый гость
Сейчас нет на сайте
intelXDK вроде как компилирует веб проекты в экзе.
Форум игроделов » Ваши проекты » Идеи для реализации » Sea Battle 3D [Gamiron #12] (Морской бой 3D)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг