Z+Angband

В этом разделе можно задавать вопросы о различных roguelike-играх

Модераторы: Sanja, Максим Кич

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 13 мар 2012, 09:45

BreakMT писал(а):Это у кравла-то код чище? Я бы так вообще не сказал :) Даже интересно теперь взглянуть на бандовский код ))
Чище-чище. Не сказал бы, что в кравловском коде косяков меньше, но у бандов они временами на-амного интереснее. Самый эпичный код (из тех, что я видел), конечно, у Unangband-а (мы тут когда-то его обсуждали немного). Но и в Z+, и в tome2, и в Sangband-е и Portralis-е загадочного хватает. Ванильный ангбанд особо не смотрел, не скажу. Но подозреваю, что ноги у всех этих косяков растут именно оттуда.

Johnbrown
Сообщения: 429
Зарегистрирован: 19 окт 2010, 17:11
Контактная информация:

Re: Z+Angband

Сообщение Johnbrown » 13 мар 2012, 18:11

А tome2 пробовал?
Милый рогалик. Жаль сайт сгинул. Какие-нибудь ресурсы по нему остались или все дружно перешли на 4?
Рандома НЕТ!

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 13 мар 2012, 19:09

Johnbrown писал(а):
А tome2 пробовал?
Милый рогалик. Жаль сайт сгинул. Какие-нибудь ресурсы по нему остались или все дружно перешли на 4?
Исходники здесь: http://gitorious.org/tome2/tome2

Описания (спойлеры) и несколько полезных патчей здесь: http://killerbunnies.org/angband/#tome

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 13 мар 2012, 19:17

Ну и если интересно, можешь мой форк попробовать. Там всего два ключевых изменения: очки навыков добавляются не при получении уровней, а "плавно", как в Sangband-е; и вместо всех существующих классов добавлен один ("master of nothing"), играя за который можно перепробовать любые комбинации скилов на выбор.

Вот тема: viewtopic.php?f=6&t=501
А здесь виндовая сборка: viewtopic.php?p=16932#p16932

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

Re: Z+Angband

Сообщение Jolly Roger » 14 мар 2012, 05:43

oldbot, публикуй интересные разборки кода рогаликов, с одной стороны интересно, с другой полезно!
Писать диздок спустя несколько лет разработки и множества изменений концепции - исконная русская девелоперская традиция.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 14 мар 2012, 06:57

Jolly Roger писал(а):oldbot, публикуй интересные разборки кода рогаликов, с одной стороны интересно, с другой полезно!
Спасибо. Но я ведь специально разборками не занимаюсь. Так, если хочется покопаться для себя, что-то найти или подправить - и натыкаюсь на такие вот перлы. Тогда могу и опубликовать. Хотя, признаться, последнее время всё чаще подмывает покопаться поглубже в коде таких монстров, как кровля и некоторые банды и нахвататься оттуда интересных идей и алгоритмов - есть мыслишка кое-что своё сварганить. Кажется, это будет поинтереснее, чем в них играть. :)

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 14 мар 2012, 09:03

Вот вам сразу и например. :) Только начал копаться в Z+, а уже не понимаю: его разработчиков азам оформления кода вообще в школе не учили? Не знают они, что единнобразность или хаотичность оформления сказывается на читабельности? Ну как можно писать, скажем, вот такое:

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

		if (i > small_tester) i = small_tester;
		else if (cheat_hear)
		{
			msgf("Reduced monsters base from %d to %d", small_tester, i);
		}
Уж тогда или так:

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

		if (i > small_tester) i = small_tester;
		else if (cheat_hear) msgf("Reduced monsters base from %d to %d", small_tester, i);
или так:

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

		if (i > small_tester)
		{
			i = small_tester;
		}
		else if (cheat_hear)
		{
			msgf("Reduced monsters base from %d to %d", small_tester, i);
		}
И тут же рядом ещё один перл:

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

	if (k > 10) k = 10;
	if (k < 2) k = 2;

	p = ((i + k)*d_ptr->freq_monsters)/100;

	/* Apply population density dungeon flags */
	if (d_ptr->flags & DF_DENSE)
	{
		p *= 2;
	}
	if (d_ptr->flags & DF_SPARSE)
	{
		p /= 2;
	}

	/* Compensate for duplicating that happens in apply_symmetry */
	if (d_ptr->flags & (DF_SYM_2 | DF_SYM_R2))
		p /= 2;

	if (d_ptr->flags & (DF_SYM_4 | DF_SYM_R4))
		p /= 4;
Ну ЧЕМ надо думать, чтобы использовать _три_ разных стиля оформления оператора if _подряд_? У меня это в голову совсем не влезает.

И это всё в одной и той же функции.

Аватара пользователя
hexMer
Сообщения: 150
Зарегистрирован: 12 сен 2009, 09:48

Re: Z+Angband

Сообщение hexMer » 14 мар 2012, 09:11

oldbot писал(а):Вообще, думаю, пора прекращать свой внезапный приступ рогаликомании и заняться снова чем-то созидательным. (:
Jolly Roger писал(а):Написать свой Рогалик?
oldbot писал(а):А? Что? Нет. (:
Что же в этом созидательного? «Стопицотый» способ убивания времени…
oldbot писал(а):есть мыслишка кое-что своё сварганить. Кажется, это будет поинтереснее, чем в них играть. :)
Jolly Roger знал...

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 14 мар 2012, 09:28

hexMer писал(а):
oldbot писал(а):Вообще, думаю, пора прекращать свой внезапный приступ рогаликомании и заняться снова чем-то созидательным. (:
Jolly Roger писал(а):Написать свой Рогалик?
oldbot писал(а):А? Что? Нет. (:
Что же в этом созидательного? «Стопицотый» способ убивания времени…
oldbot писал(а):есть мыслишка кое-что своё сварганить. Кажется, это будет поинтереснее, чем в них играть. :)
Jolly Roger знал...
:D Да, я уже вспоминал этот диалог, когда писал. Любопытно было, вспомнит ли кто-то ещё. :)

С тех пор кой-какие идейки появились касательно разработки, и рогаликки это неплохой вариант их обкатки. Вот именно эта обкатка и будет созидательной. Если, конечно, сподвигнусь.

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 14 мар 2012, 09:31

oldbot писал(а):его разработчиков азам оформления кода вообще в школе не учили? Не знают они, что единнобразность или хаотичность оформления сказывается на читабельности?
Что такое повторяемость кода их, видимо, тоже не учили. Тот же самый кусок плюс ещё несколько строк повторяется буква в букву в другой функции в том же файле.

Johnbrown
Сообщения: 429
Зарегистрирован: 19 окт 2010, 17:11
Контактная информация:

Re: Z+Angband

Сообщение Johnbrown » 14 мар 2012, 18:27

Скачал звуки, sound.cfg, все бросил в lib->xtra->sound, в опциях включил sound. Звука нет. Что я делаю не так?
Рандома НЕТ!

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: Z+Angband

Сообщение Максим Кич » 15 мар 2012, 09:11

oldbot писал(а):Вот вам сразу и например. :) Только начал копаться в Z+, а уже не понимаю: его разработчиков азам оформления кода вообще в школе не учили? Не знают они, что единнобразность или хаотичность оформления сказывается на читабельности? Ну как можно писать, скажем, вот такое:
Насколько я понимаю, Z+ использует код Zangband, который использует код Angband 2.x, который местами использует код Angband 1.x из которого кое-где торчат уши Мории. Ожидать от подобного проекта стройности кода и красоты решений я бы не стал.
Dump the screen? [y/n]

Johnbrown
Сообщения: 429
Зарегистрирован: 19 окт 2010, 17:11
Контактная информация:

Re: Z+Angband

Сообщение Johnbrown » 15 мар 2012, 16:24

Скачал звуки, sound.cfg, все бросил в lib->xtra->sound, в опциях включил sound. Звука нет. Что я делаю не так?
Печаль...
Рандома НЕТ!

oldbot
Сообщения: 607
Зарегистрирован: 09 фев 2011, 14:51

Re: Z+Angband

Сообщение oldbot » 16 мар 2012, 08:07

Максим Кич писал(а):
oldbot писал(а):Вот вам сразу и например. :) Только начал копаться в Z+, а уже не понимаю: его разработчиков азам оформления кода вообще в школе не учили? Не знают они, что единнобразность или хаотичность оформления сказывается на читабельности? Ну как можно писать, скажем, вот такое:
Насколько я понимаю, Z+ использует код Zangband, который использует код Angband 2.x, который местами использует код Angband 1.x из которого кое-где торчат уши Мории. Ожидать от подобного проекта стройности кода и красоты решений я бы не стал.
Ожидал такого комментария, но согласиться не могу. Я ведь говорю не о красоте решений, а о правильности оформления кода. Это азы разработки. Скажем, я обычно пишу вот так:

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

if (...) {
	line1();
	line2();
} else {
	line3();
}
if (...)
  line4();
Но если я буду дорабатывать программу, с вот таким, скажем, стилем оформления:

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

if (...)
{
	line1();
	line2();
}
else
{
	line3();
}

if (...)
{
  line4();
}
то такого же стиля и буду придерживаться, несмотря на то, что код "расползается" местами в полтора-два раза. Это элементарное удобство поддержки кода и уважение к разработчикам, которые будут поддерживать его после тебя.

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: Z+Angband

Сообщение Максим Кич » 16 мар 2012, 21:41

oldbot писал(а):Это азы разработки.
В том-то и дело, что «азы». Академические истины. А реальность такова, что код должен быть в первую очередь рабочим, причём рабочим он должен быть в разумные сроки. Прочее, если оно не оговорено в ТЗ отдельным пунктом — "nice to have", как говорил один мой заказчик.

Это не значит, что абы-какое оформление допустимо. Но это значит, что именно оформлением можно жертвовать в первую очередь. И я очень спокойно отношусь к подобным случаям. В конце концов сейчас почти все IDE имеют функции автоматического форматирования.
Dump the screen? [y/n]

Ответить

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

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