Моя попытка

Закрытые или заброшенные проекты, не состоявшие в Клубе, но имевшие ветку на форуме.

Модератор: Jolly Roger

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Моя попытка

Сообщение Newman » 23 фев 2010, 15:50

Приветствую всех!
Это мой первый пост на этом форуме, и сим сообщаю, что попытаюсь испечь свой рогалик.
Да, вкратце - история. Играл (и продолжаю играть) во много рогаликов, хотя, простите, предпочитаю тайловую графику. Больше всего нравится NetHack (и SlashEm), но так пока и не прошёл (изучение спойлеров или исходников кажется не слишком честным путём). А что прошёл... кхм... Sword of Fargoal? :) Кажется, всё... :(

Мой проект будет писаться на Java (опыт небольшой, но C много писал только под ДОС). Графика - тайловая 32*32. Остальные подробности пока утаю - во-первых, чтобы кое-что было сюрпризом, а во-вторых, вполне возможно, что проект так и не дойдёт до релиза (насколько я понял - такая печальная участь у 90% всех рогаликов).

А теперь - можно я задам несколько вопросов?

1. Тайлы. Что лучше - попробовать нарисовать самому, пусть рисунки будут наивные, или взять нужные из Nethack или Dungeon Crawl)?

2. Остров. Мне нужно сгенерировать остров (на котором будут входы в подземелья) - но не нашёл, какой лучше алгоритм использовать.
Попробовал такой: всем элементам map[][] присваивается сл4учайное значение от 0 до 255, крайние клетки всегда = 0. Потом несколько раз провожу "усреднение значений" карты:
map[y][x] = (map[y][x]+map[y-1][x]+map[y+1][x]+map[y][x-1]+map[y][x+1]) / 5;
И - финал - для всех точек карты, для которых map[y][x] < некоего порогового значения, делаю "воду", иначе - это суша.
Получается не очень. :(

Остальное будет позже.

P.S. Пока в программе красный квадрат бегает по экрану по нажатию клавиш курсора. :)

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Моя попытка

Сообщение Jolly Roger » 23 фев 2010, 18:44

Как человек не выпекший ещё свой рогалик, но уже столкнувшийся с заданными вопросами, могу сказать:
1. Не заморачивайся с рисованием тайтлов, вообще, сделай поддерку тайтлов, если уж так хочется, а вместо красивых картинок используй буквы. Придёт время, будет вам и белка, будет и свисток, а в начале: НЕ трать на это время вообще. Куда важнее, чтобы игра могла поддерживать картинки разных размеров и менять их без внесения именений в код.
2. Отложи случайный генератор на будущее и загружай его из файла, нарисованный лично тобой. Генератор такая штука, его лучше подгонять под концепцию игры, а не игру под генератор. На том этапе, что ты сейчас важнее общая работа с графикой и всякая техника, вроде обхождения препятствий.
Как-то вот так, думаю если, что то форумчане меня поправят.
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Re: Моя попытка

Сообщение Maelstrom » 23 фев 2010, 20:42

1. Тайлы. Что лучше - попробовать нарисовать самому, пусть рисунки будут наивные, или взять нужные из Nethack или Dungeon Crawl)?
Если не умеешь рисовать, а тайлы уж очень хочется, есть два пути: либо ты ищешь художника, что будет не очень легко без готового хорошего рогалика, либо ты тыришь графику откуда-то ещё. Кравлом и Нетхаком можешь не ограничиваться, существует ещё дохрена игр (особенно на старых приставках), откуда можно взять вполнее нормальные тайлы.
Айв кнгенгах Йог-Сотот

Аватара пользователя
Anfeir
Сообщения: 651
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Моя попытка

Сообщение Anfeir » 24 фев 2010, 08:53

Главное - делать то, от чего удовольствие получаешь .)
Хочешь рисовать тайлы - рисуй.
Хочешь генерить остров - генери.
Если не уверен, что хочешь, то следуй советам Jolly Roger .)
Ну и вдохновение штука очень непостоянная, ее надо использовать грамотно:
для поддержки нужен видимый, осязаемый результат трудов, чем быстрее, тем лучше.

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 24 фев 2010, 09:17

Большое всем спасибо за ответы!

День второй.
Да, в общем, графика - дело десятое.
Что пока получилось - можно посмотреть на скриншоте. :)
screenshot.png
Скриншот 1
screenshot.png (7.06 КБ) 5889 просмотров
Теперь вопрос - куда двигаться дальше.
Можно, я изложу здесь несколько своих соображений? И если я что-то скажу не так, поправьте меня, пожалуйста.

Итак, у меня будет класс Game - ядро игры.
В нём будут объявлены массивы для карты, для видов местности (элементы карты), существа (существо с номером 0 - сам игрок), предметы.

Код: Выделить всё

class Game {
 static final MAP_WIDTH = 64, MAP_HEIGHT = 64, TILE_SIZE = 32;
 int[][] map = new int[MAP_HEIGHT][MAP_WIDTH];
 Terrain[] terrain = { new Terrain("water.png"), new Terrain("grass.png"), new Terrain("tree.png") };
 /* т.е. значения в map: 0 - это вода, 1 - трава, 2 - дерево */
 int[][] flags = new int[MAP_HEIGHT][MAP_WIDTH];
 /* тут будут разные флаги для определённой клетки: видимость, освещённость и т.п. */
 ArrayList<Creature> creatures; /* существа */
 ArrayList<Thing> things; /* предметы */
В правильном ли направлении я двигаюсь?

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Re: Моя попытка

Сообщение Maelstrom » 24 фев 2010, 09:40

Неее, ТАКИХ тайлов точно не надо, лучше АСКИИ
Айв кнгенгах Йог-Сотот

Аватара пользователя
Anfeir
Сообщения: 651
Зарегистрирован: 14 дек 2007, 09:29
Контактная информация:

Re: Моя попытка

Сообщение Anfeir » 24 фев 2010, 09:56

У этих тайлов свое достоинство - они глаза _совсем_ не напрягают.

С классом Game в целом вроде норм. Единственное, я бы отделил UI от игровой логики. Чтобы класс Game не заботился сам ни о размерах тайла, ни о png файлах, и т.п. Разделение логики (не держать все в голове), ну и жесткой нет привязки к тайлам вообще. можно будет сделать хоть ASCII хоть full-3d .)
Но это не обязательно.

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 24 фев 2010, 10:13

Так лучше?
screenshot2.png
Скриншот 2
screenshot2.png (9.48 КБ) 5882 просмотра
UPD: Попробую теперь добавить кое-каких монстров...

Аватара пользователя
Sanja
Администратор
Сообщения: 776
Зарегистрирован: 24 ноя 2006, 12:25
Откуда: Новосибирск
Контактная информация:

Re: Моя попытка

Сообщение Sanja » 24 фев 2010, 11:38

А мне понравился первый вариант :lol:

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Re: Моя попытка

Сообщение Maelstrom » 24 фев 2010, 12:07

У этих тайлов свое достоинство - они глаза _совсем_ не напрягают.
Странные у тебя глаза. Едкие кислотные цвета тебе нормально, а кравловские тайлы глаза разъедают? :lol:
Так лучше?
Нет

Чем тебе АСКИИ не нравится то? Куда лучше плохосделанных тайлов.
Недавно подбирал буковки для Барионикса, получилось вполне айс
Вложения
SymbolTest.png
SymbolTest.png (8.33 КБ) 5872 просмотра
Айв кнгенгах Йог-Сотот

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 24 фев 2010, 12:27

А, я понял. Больше всего не понравились яркие цвета на фоне. Да, надо приглушить. Но вопрос графики пока отложу на потом, надо всё-таки "оживить" мир немного...

Аватара пользователя
Jolly Roger
Сообщения: 2973
Зарегистрирован: 27 ноя 2009, 09:10
Откуда: Minsk, Belarus

Re: Моя попытка

Сообщение Jolly Roger » 24 фев 2010, 15:34

2 Maelstrom, а ничего так, красивенько.
Надеюсь будут доступны оба варианта?
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

Аватара пользователя
Maelstrom
Мастер
Сообщения: 2062
Зарегистрирован: 26 ноя 2006, 14:19
Откуда: г. Усть-Кирдык
Контактная информация:

Re: Моя попытка

Сообщение Maelstrom » 24 фев 2010, 16:02

Надеюсь будут доступны оба варианта?
Я тоже надеюсь, что тайлы удасться дорисовать
Айв кнгенгах Йог-Сотот

Аватара пользователя
Newman
Сообщения: 144
Зарегистрирован: 23 фев 2010, 15:30

Re: Моя попытка

Сообщение Newman » 24 фев 2010, 19:40

Простите, а на Яве кто-нибудь тут рогалики программировал?
Можно ли вешать весь "цикл жизни" в методе keyPressed?
(В этом случае, как мне кажется, о мыши вообще можно забыть.)
Наверное, логичнее сделать "жизнедеятельность" в отдельном потоке run(), в котором проверять нажатые клавиши и кнопки мыши, а потом делать перемещения монстров и т.д....

dunno
Сообщения: 26
Зарегистрирован: 29 дек 2009, 20:57

Re: Моя попытка

Сообщение dunno » 27 фев 2010, 17:12

привет.
Newman писал(а):Простите, а на Яве кто-нибудь тут рогалики программировал?
Соседняя тема моя, собственно, про BlameR.
Newman писал(а):Наверное, логичнее сделать "жизнедеятельность" в отдельном потоке run(), в котором проверять нажатые клавиши и кнопки мыши, а потом делать перемещения монстров и т.д....
да, так логичнее. Про мышку забывать не за чем в принципе, ее эвенты тоже можно обрабатывать, как и клавишные, в основном потоке. То есть метод run():
while(<что-нибудь>)
{
events.check(); // здесь слушаем клаву и мышку
monsters.nextStep(); // здесь всех двигаем
field.show(); // все рисуем
}
как-то так.

Сразу вопрос: как ты выводишь графику? awt или что-то другое?

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя