:) и ещё периодический прилёт Нибиру, и периодический конец цивилизации - будет полный реализм для планеты Земля :)
Вид для печати
БК-0010, Нибиру прилетит когда ты вышлешь черновики по химре
---------- Post added at 20:24 ---------- Previous post was at 20:22 ----------
Jukov, перебить Меднаногова труд не благодарный, онли пошаговое.
NovaStorm, на кубе
кусок мыла было равно вселенскому щастию
может и есть, но крайне редко.
256х192 клеток
На экране будет видно 12х12 клеток. Т.е., если перевести в твои экраны, 256х192 / 12х12 = 341 экран, что намного больше 8 :)
Просто, никто не пробовал писать Цивил в реальном времени, а я хочу такую игру увидеть, хотя бы на PC. :)
Jukov, ЧВ как же?
Мне она даже больше нравилась чем Варик на пц...
Andrew771, вариант расмаривался как платформер
16 экранов! где менятся все !
я изначально золожил непосилные требованя к персонажу минимум 3 анимации
с маской на движение.
может и есть, но крайне редко. я хочу видеть дизайнера ландшафта,
природа сделает и не такое. а человек тупо за...ся на 1 экране.
Перечитай посты внимательно, сумбурно может грю, на работе еще засады, сижу разгребаю.
Ты получишь с таким количеством, тупо панзер атак. сраную мировую войну,
и еще кучу игрушек 82-86 года подобного рода.
16 экранов это только 1 государство или какя нибудь территрория проходная.
никогда 128 кб ты не впихаешь цивил при таком подходе.
постояннные дозагрузки и тд . не будет той отмосферы.на текст дискеты не хватит.
и ты нифига опять же не понял
хер с ним сколько у тебя на экране знакомест. 12на 12 в пошаговке
я вас из бфг щаз грохну бензопилой добавлю.
у тя есть виртуальный экран на 2 стандартных спеки.
все уровни ландшафта хранятся в формате примерном, что я описал
экономия ппц на ландшафте, все внимание деталям.
Andrew771, смешная породия на существующее на ZX
Без обид, это апаратное ограничения платформы.
АлонеКодер доказал всем, что возможно и круто и еще несколько версий.
Я в свое время потратил туеву хучу времни на подобные е-ксперементы.
так ни 1 проекта и не закончил по причине не возможности реализовать, в той мере что я хочу видеть.
ZXoomРеально смысл такой же, что и в дигере. толко тормознее и псевдо 3д .
Сделать ты сделаешь в оналох, это останется, но играть будут еденицы.
---------- Post added at 23:16 ---------- Previous post was at 23:13 ----------
Просто, никто не пробовал писать Цивил в реальном времени, а я хочу такую игру увидеть, хотя бы на PC заведомо утопия.
Читаю и умиляюсь, прямо-таки все сходу на спеке стали писать шедевры! Даже ни на чем не тренировавшись и учившись... Сравните даже Медноногова первые игры с последними - уровень вырос на порядок. Главное поставить себе цель и реализовать ее, пока никто тухлыми яйцами и помидорами не забросал, а это я смотрю у нас умеют.
Andrew771, не обращай ни на кого внимания, твори!
NovaStorm, вы на кубе небыли в годы ссср
мыло там была реальной валютой:)
---------- Post added at 10:31 ---------- Previous post was at 10:26 ----------
Дмитрий,
как вам охото попалемить
сделано реально текнично, но смысла в игрухе 0.
это здоровая критика, без сарказма.
читаю и умиляюсь
он и поставил цель и делает, никто ему не мишает, наоборот помогают.
замахиватся на такой прожект как цивил в одиночку не каждый сдюжит.
---------- Post added at 11:54 ---------- Previous post was at 10:31 ----------
кстате о Меднаногове правильнее сказать "он портировал шедевр" на спеки, это как раз один из факторов успеха, что впрочем не отменяет его как класного кодера.
спектрофон намбер 17 рекомендед к прочтению.
Если честно, ЧВ как-то не впечатлил, очень примитивно. Хотя я в Варик на PC не играл. Лучше сравнить НЛО-1 с НЛО-2 Медноного. В НЛО-1 геймплея ваще нет. Носишься одним героем по карте как дурак и всё. А в НЛО-2 есть где подумать, много интересных карт и игровых ситуаций. Я с удовольствим рубился наверное с месяц.
Я вижу две главных причины, почему нельзя создать нормальную реалтайм на Спеке:
1) низкое быстродействие не позволяет реализовать большое количество юнитов с развитым ИИ. Будет либо много тупых юнитов либо мало умных.
2) малый объем адресуемой напрямую памяти, т.к. нижние 16Кб съедает ПЗУ. Процедуры, которые будут отвечать за обработку юнитов в динамике съедят память, которая нужна для организации ИИ.
Можно, например, так: "От каждого по способностям, каждому по труду". Но в социализме деньги существуют, только планово распределяются.
Или, кроме того, до денег вообще-то был бартер. Деньги - не более, чем единая конвертируемая мера. Назовите спичку валютой - и это будут деньги. Не называйте - и это будет Civ без денег. Имхо, а как собирается Andrew771 делать, я пока не знаю.
я тоже. :) Про разные строи нужно думать еще долго. Но должно быть, чтобы при каждом из них был свой способ ведения экономики. Где-то деньги, где-то натуральный обмен, где-то распределение ресурсов, возможно, где-то сами юниты строят и плодятся и платят налоги (как, не знаю пока еще). :)
А вообще игра Цивилизация - это такая База Данных с языком запросов, всего лишь. Строим кучу таблиц со связями между собой и лазим по ним на каждом ходу. Взаимосвязи можно задавать математическими формулами с булевыми включениями. :)
---------- Post added at 22:23 ---------- Previous post was at 22:19 ----------
Так и делаю, спасибо. :) Но Totem тоже ценные идеи говорит. Я перечитал еще раз нашу перепалку, понял, что он хочет донести (и Novastorm тоже). Что можно строить карту "слоями". 1 слой - ландшафт, 2 слой - юниты и здания, 3 слой - дороги, 4 слой - флаги. А для каждого слоя может быть свой формат, для экономии места.
Andrew771, угу
вот нашел в древнем архиве из бэкапа
Вся графика для фонов.
//стены
Кирпич
"настоящие"- 2020 год
"прошлое"- наши дни
"древние времена" - все что раньше "прошлого"
"будущее" -?
"нестабильные" -локации в которые попадает герой, после временной ловушки и тд.
Если потребуется экономия памяти на локациях и ПОЛУЧИТЬСЯ!
"базовым" уровнем является "прошлое(наши дни)", в данных локации "настоящие" храняться только изменения разрушений после катастрофы.
//Level
8 байт //(str) (REZERVED) Name_Level //название уровня
//(максимальное ограничение для zx-spectrum 6х4х512б=12288)
2 байта //(long)(REZERVED) Next_Level // адрес следующего уровня
//локация
//REZERVED -для других платформ или турбированных zx-spectrum (или неизвестно будет ли использовано)
//CHANGES_LEVEL_SECTION // описвает из какого уровня можно взять "базу" для изменения графики локации
// GFX_LAYER_SECTION
Layer0 //(REZERVED) описывает "задник" (облака,постройки, деревя и т. за основным Layer0/1, может быть анимированным)
Layer0/1 // основной слой фона, не содержит аннимированных тайлов
можед содержать иформацию, о симмеричных тайлах (половинки),повторяющихся блоков тайлов,одиночных тайлов.
Layer0/1/1 // описывает изменения на тайлах Layer0/1 (надписи,трещины и т.д)
Layer0/1/2 // описывает статические аннимированные спрайты Layer0/1 (открывающиеся окна,двери, эффекты и т.д)
Layer0/1/3 // описывает статические спрайты, прекрывающие все Layers по 0/1/2 (машины,решотки,деревья,NPC)
Layer2 // описывает cтатические спрайты, прекрывает героя,врагов,NPC и др. анимированные и
статичесие спрайты
Layer2/1/1 // описывает аннимированные спрайты,прекрывает героя,врагов,NPC и др. анимированные и
статичесие спрайты
Layer2/1/2 //(REZERVED) погодные условия (ветер,снег,дождь)
//COLLISION_SECTION
POSSIBALE_MOVE // описывает, где может передвигаться герой (лестницы,лифты,площадки, препятствия)
//ENEMY_SECTION //описыват врагов в локации
ENEMY_L
//ITEMS_SECTION // описывает предметы в локации
//TIGGERS_SECITON // описывает состяние триггеров локации
//NPC // случайные и нет "прохожие-расхожие"
/////вариант 1
Layer0/1
2 байт (long) // адрес слеудующего блока
1 байт (int) //симмметричен? (0/1)
1 байт (REZERVED)(int) //номер страницы в zx
2 байта (long) //адрес спрайта
2 байта (REZERVED) (long) //(ширина x высота)(для zx-spectrum возможно будет использоваться 1 байт)
//1- 1x8 (zx 1x1)
//2- 2x8 (zx 2x1)
//3- 3x8 (zx 3x1)
//4- 4x8 (zx 4x1) и тд.
//основной размер тайлов 32x32 и 16x16
1 байт (int) //количество повторений по X
1 байт (int) //количество повторений по Y
//
---------- Post added at 14:56 ---------- Previous post was at 14:55 ----------
и еще вот какой то бред
// GFX_LAYER_SECTION
//Layer0 ////(REZERVED) описывает "задник" (статические фоны: гор,городов, постройки, деревя,механизмы и т.д за основным Layer0.1 )
// тайлы выводяться без масок простым копированием в виртуальный буфер
//Layer0_Repreat // описывает повторяющиеся тайлы // 7-8 байт на группу тайлов
1 байт //(int) // количество повторяющихся разных тайлов (#FF -нет повторяющихся тайлов, следующий байт секции Layer0_Single )
//Layer0_Repreat_Data //стуктура данных
1 байт //(int) // (REZERVED) // страница памяти для zx-spectrum
2 байта //(long) // адрес тайла
1 байт //(int) // младшие 4 бита1 байт //(int) // количество повторяющихся разных тайлов (#FF -нет повторяющихся тайлов, следующий байт секции Layer0_Single )
// %0000 тайл 64x64(8x64)
// %0001 тайл 32x32(4x32)
// %0011 тайл 16x16(2x16)
// %0111 тайл 16x8 (2x8)
// старшие 4 бита
// %0000 тайл целый
// %1000 половина тайла
// %0001 (REZERVED) тайл требует зеркального отображения по вертикали
// %0011 (REZERVED) тайл требует зеркального отображения по горизонтали
1 байт //(int) // количество повторений по X
1 байт //(int) // количество повторений по Y
1 байт //(int) // координата по X
1 байт //(int) // координата по Y
//Layer0_Single // описывает одиночные тайлы
1 байт //(int) //количество одиночных тайлов (#FF -нет тайлов, следующий байт секции Layer0.1 )
//Layer0_Single_Dата // стуктура данных (6 байт на описатель -таких тайлов будет немного в этом слое)
1 байт //(int) // (REZERVED) // страница памяти для zx-spectrum
2 байта //(long) // адрес тайла
1 байт //(int) // младшие 4 бита
// %0000 тайл 64x64(8x64)
// %0001 тайл 32x32(4x32)
// %0011 тайл 16x16(2x16)
// %0111 тайл 16x8 (2x8)
// старшие 4 бита
// %0000 тайл целый
// %1000 половина тайла
// %0001 (REZERVED) тайл требует зеркального отображения по вертикали
// %0011 (REZERVED) тайл требует зеркального отображения по горизонтали
1 байт //(int) // координата по X
1 байт //(int) // координата по Y
//Layer0.1 // основной слой фона, не содержит анимированных тайлов
//Layer0.1_Repreat // описывает повторяющиеся тайлы
1 байт //(int) // количество повторяющихся разных тайлов (#FF -нет повторяющихся тайлов, следующий байт секции Layer0.1_Single )
//Layer0.1_Repreat_Data //стуктура данных
1 байт //(int) // (REZERVED) // страница памяти для zx-spectrum
2 байта //(long) // адрес тайла
1 байт //(int) // младшие 4 бита
// %0000 тайл 64x64(8x64)
// %0001 тайл 32x32(4x32)
// %0011 тайл 16x16(2x16)
// %0111 тайл 16x8 (2x8)
// %1111 тайл 8x8 (1x8)
// %1110 тайл 16x32(2x32)
// %1100 тайл 8x32 (2x32)
// %1000 тайл 8x16 (2x16)
// старшие 4 бита
// %0000 тайл целый
// %1000 половина тайла
// %0001 (REZERVED) тайл требует зеркального отображения по вертикали
// %0011 (REZERVED) тайл требует зеркального отображения по горизонтали
1 байт //(int) // количество повторений по X
1 байт //(int) // количество повторений по Y
1 байт //(int) // координата по X
1 байт //(int) // координата по Y
//Layer0.1_Single_Dата // стуктура данных
1 байт //(int) //полное количество одиночных тайлов
//Layer0.1_Single_Dата_Rereat// количество повторений одного и того же тайла
//встречающегося в различных координатах виртуального буфера
1 байт //(int) // количество повторений (#FF -нет повторений этого тайла)
1 байт //(int) // (REZERVED) // страница памяти для zx-spectrum
2 байта //(long) // адрес тайла
1 байт //(int) // младшие 4 бита
// %0000 тайл 64x64(8x64)
// %0001 тайл 32x32(4x32)
// %0011 тайл 16x16(2x16)
// %0111 тайл 16x8 (2x8)
// %1111 тайл 8x8 (1x8)
// %1110 тайл 16x32(2x32)
// %1100 тайл 8x32 (2x32)
// %1000 тайл 8x16 (2x16)
// старшие 4 бита
// %0000 тайл целый
// %1000 половина тайла
// %0001 (REZERVED) тайл требует зеркального отображения по вертикали
// %0011 (REZERVED) тайл требует зеркального отображения по горизонтали
//Layer0.1_Single_Dата_Rereat_Coord //для каждого такого тайла храняться только координаты
1 байт //(int) // координата по X
1 байт //(int) // координата по Y
//1 байт //(int) // координата по X // пример
//1 байт //(int) // координата по Y // пример
на наших клонах с памятью проблем как бе нет
---------- Post added at 15:27 ---------- Previous post was at 15:24 ----------
ток ее никто не юзает
В современных-то компах конечно да. Но я придерживаюсь мнения, что если и писать игру, то для стандартного спек128, чтобы шло у всех. А то так сюда можно и 7/15МГц и HDD прикрутить. Проще сразу писать на pc - у него проблем с теневым озу вообще нет:). Что касается 1-го экрана, то это не панацея. Имеет смысл только при небольшом количестве спрайтов и небольшом их размере. Все спрайты должны уместиться вместе с экраном в 7-й банке, т.к. из 1,3,4,6-й банки в 7-ю спрайты напрямую не перекинешь. Получается: больше места под код - меньше места под спрайты.
я бы заморочился на 7мгц и 256кб
Гы... А у меня давным-давно на PROFI turbа полетела, а починить я не смог, не соображаю :rolleyes:
Впрочем сейчас я все равно тока эмулями и пользуюсь. :D
Поддерживаю.
---------- Post added at 10:03 ---------- Previous post was at 10:01 ----------
Кроме спрайтов, кстати, еще будет куча подписей и надписей. Это хочу сделать через пропорциональный шрифт от 3 до 5 пикселей в ширину. Не от красивой жизни, а чтобы побольше инфы вмещалось на скудное пространство куска экрана. :)
У меня идея возникла, опирающаяся на все предыдущие наши прения: кодировать карту налагающимися друг на друга прямоугольниками. Тогда в памяти весь ландшафт для карты 256х192 займет не более 3-4 кб (если координаты одного прямоугольника запоминать в 4 байтах)!
Для проверки этой идейки написал прогу на Delphi, см.файл. Поиграйтесь с различными коэффициентами - можно получать интересные ландшафты с минимумом затрат памяти.
Точка и запятая в проге для флоатов видимо зависят от настроек локали.
Прямоугольниками кажется будет страшновато. Кругами/овалами было бы лучше.
Думаю сначала надо определиться что и как в игре нужно будет делать с картой.
То есть, например, можно ли сделать карту в виде генератора, который будет выдавать значение клетки по формуле. Или же нужны чётко заданные ландшафты?
NovaStorm, дык энто описание границ, сам то спрайт может и круг изображать, от кругов выгоды ни какой, один фиг 4 байта.
---------- Post added at 12:45 ---------- Previous post was at 12:42 ----------
хотя нет
координата +радиус
3 байта
Прямоугольники тоже можно кодировать 3 байтами, если их длина и ширина меньше или равна 16 (по полбайта). Если всё же нужна длина или ширина больше 16 (а это редкость), то можно прямоугольники разбивать на более мелкие.
---------- Post added at 14:01 ---------- Previous post was at 14:00 ----------
ага
с кругами заколебёшься. А прямоугольники можно делать мелкими, хорошо получается.
---------- Post added at 14:02 ---------- Previous post was at 14:01 ----------
нужен чётко заданный ландшафт.
Andrew771, да окружность больше подходит для 3d
менять ландшафт будешь?
>уборку урожая крестьянами (т.е. их юнитов водить по карте)
Это уже Settlers =)
>прямоугольники можно делать мелкими, хорошо получается.
Ну я с прогой поигрался - угловато получается, надо бы тогда как-то это дело сглаживать чтоли. Хотя бы для больших прямоугольников углы обрезать.
всегда одинаковое? А ты не учитываешь, что ход мировой истории в значительной мере зависел от погоды, и как следствие от урожайности. Например французская революция была следствием нескольких лет похолодания из-за вулканического пепла в атмосфере, исход евреев из Египта был обусловлен тем, что египтяне были заняты свалившимися на них катаклизмами и им было не до евреев, и т.д.
Стихийные бедствия можно ввести. Но чтобы они не рушили всю экономику сразу, а только часть.
БК-0010, ты для какого компьютера игру с такими тонкостями решил сделать?
предлагаю кастовать саранчу 9 уровня.
Этот генератор, который сейчас на Delphi, перепишу для Спектрума. Естественно, уже с готовыми подобранными коэффициентами. При каждой новой игре будет генерироваться новая карта.
Есть идея, покрывать при генерации в самом конце не прямоугольниками, а фигурками из тетриса. :)
Andrew771, а нет желания присмотреться к компилятору HiSoft BASIC ?
http://www.worldofspectrum.org/infos...cgi?id=0008249
вот пример игрушки сделанной с его помощью http://www.worldofspectrum.org/infos...cgi?id=0018540
да и многие стратегии например от Astros Productions сделаны судя по коду не на чистом асме.
Чем мучаться на басике, уж лучше sdcc взять.
Тут правда возникает вопрос о памяти, если накладные расходы от кривости компиляции и стэкфрейма приемлемы(а они 5-10% от силы), то писать код на С удобнее несравненно, особенно при учёте того, что при таком количестве динамических объектов нужно будет делать свой менеджер памяти, база для которого в sdcc афаик есть.
к сожалению, я не знаю C, только басик или паскаль. Хотя, можно быстро подучить, благо там многое похоже с паскалем.
К тому же, бОльшую часть будут занимать данные, а не код, которые хочу задавать "голыми" байтами и битами для большой экономии памяти. Думаю, это же самое займет существенно больше, если писать на языке высокого уровня.
Нужны будут массивы записей. А записи-то на асме можно делать переменной длины, а в C фик.
>а в C фик
Не боишься сишников, такое говорить? =)
Можно всё, в том числе и голые биты(руками впрочем эффективнее обычно). Чем и хорош язык, что можно спуститься до любого уровня.
Данные будут те же, что и для гипотетического асм-варианта. Я сомнения только по коду выражал.
И да, я сам С занялся после 86го асма и паскаля, язык учится просто.