EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Если не принимать во внимание физические размеры тайлов на местности, должно работать.
Процесс построения карты -- процесс выбора типа ландшафта для каждого тайла, и типа покрытия?
Ну и я хотел бы более конкретно по техническим вопросам. Формат входных данных, формат выходных данных; доступные ресурсы (логи?) Как это всё будет вызываться? Кстати, какая ОС на сервере? Можно через мыло.
зачем мыло, может еще кто заинтересуется
сервер - мой домашний комп, с 32х разрядной виндой
т.о. нужна 32-разрядная DLL под винду, с одной внешней функцией
на входе: ширина (int), высота (int), тип воды (int) и набор параметров (массив, int[9]) - представленность разных типов местности, задается числом 0..4 (нет..много).
на выходе, да, ландшафт и покрытие для каждого тайла: массив размера ширина*высота, структур формата { рельеф (int); покрытие (int) }
логи.. что за логи? можно без них
еще можно потом колбек добавить в параметры (просто указатель на функцию, параметры - текущая стадия работы генератора (int) и процент выполнения (int)).. к-рый будет моей программе сообщать как дела у библиотеки. но это не критично.
ps Йорик поправляет, заменил название ландшафт на рельеф.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Peter, мне казалось ты говорил, что карта в картинку генерится, где пиксель = рельеф поверхности. я чего-то путаю ?
Чем могу, хоть мелочамиНадеюсь, понятно, что это я не в качестве придирок или выпендривания, а для пользы - ПКМ как я ее понимаю. Может это и неважно, а может и от удобства модели потом будет зависеть удобство программирования.
В "покрытие" что входит - почвы, вода, растительность, животные? Вот в Циве была "степь" и "луг", где переводили "равнина", где "поле": в оригинале было "plains" (равнины) и "grassland" (луг, пастбище). Что запутывает - тут смесь разных классификаций: луг - РАСТИТЕЛЬНОСТЬ во влажных условиях, не обязательно на равнине; пастбище - это когда уже живность пасется; степь - это уже описание ландшафта, т.е. КОМПЛЕКСА признаков: 1. равнина 2. бедная водой, но 3. КАК РЕЗУЛЬТАТ растет скудная трава, и может даже и живность пастись, но не в больших масштабах.
Т.е. применительно к игре: если планировать снабжение, то в степи немного коней может долго пастись; большая же конная армия все быстро сожрет и кони быстро передохнут без запасов фуража. На лугу получше.
Наверное, это и заставляло кочевников кочевать по степи.
Животные: в Циве это были ресурсы на клетке, а у вас как?
в покрытие входит тип покрытия. разница между лугом и степью - луг зеленый, степь желтоватая.. для хозяйственной деятельности разную ценность будут иметь эти тайлы.
кочевали да, выедали траву и передвигались на новое место. хотя в принципе они могли б и на одном месте находиться, но для этого стадо должно быть маленькое. если стадо огромное то на одном месте никак не прокормить его. я так думаю.
скорей всего животные будут типа юнитов, пастись. и можно будет их украсть.
она пока вообще не генерится
с картинки карта считывается (сейчас, это временное решение), т.к. картинку легко в пейнте нарисовать от руки.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Кстати, в КтП2 были полярные горы: гора - рельеф; полярная - покрытие снегом (и льдом?) КАК СЛЕДСТВИЕ КЛИМАТА. И отсюда - отсутствие растительности. Ну и почти отсутствие животных.
Вода - важная часть жизни и игры. В Циве река то по клетке была, то между клетками. По идее на лугах колодцы можно строить. в степи вряд ли.
Ну да, я ж об этом: чтоб поведение народов, КАК И В РЕАЛЕ, зависело от географии!кочевали да, выедали траву и передвигались на новое место. хотя в принципе они могли б и на одном месте находиться, но для этого стадо должно быть маленькое. если стадо огромное то на одном месте никак не прокормить его. я так думаю.
А будешь различать диких и домашних? Угнать можно только домашнее стадо, на диких можно либо охотиться, либо приручать - приручать долго, и сразу стадо не приручишь; домашние - массовые стада.скорей всего животные будут типа юнитов, пастись. и можно будет их украсть.
P.S. а графику готовую ни откуда не хотите взять, хотя бы для начала, для макета - потом, если дело пойдет, можно уже будет и рисовать. Если с Цивой опасно связываться - то можно из КтП2 взять, она покрасивше даже, чем в Цив3:
![]()
тут я врядли помошник, но через какое-то время думал взяться поизучать джаву. наверно мог бы какую-то вебную обвязку такой игры пробовать на джава сделать. например систему обмена дипломатической почтой, регистрация договоров между игроками, запись в партии. хотя если делать с прицелом на хостинг, наверно разумней на пхп
в галакси мне нравиться система (на логику игры она не влияет, чисто информационная).
стенка - е-майл рассылка, на которую подписаны участники партии.
- Пошлите серверу текст договора с первой строчкой следующего вида:
#treaty <GameName> <Password> <Race1> [<Race2> ... <RaceN>]- Сервер зарегистрирует договор, присвоит ему некоторый идентификатор (ID) и разошлет текст, всем упомянутым в первой строчке, расам, с просьбой ратифицировать этот договор.
- Расы могут согласиться с текстом договора и послать в приказе строчку:
O TREATY SIGN <ID>
(ВАЖНО!!! Раса - автор договора, тоже должна его подписать)
или отклонить договор командой:
O TREATY REFUSE <ID>
при отказе от подписания рассылается уведомление немедленно, что мол такая-то раса отказалась подписывать, и договор уничтожается, а при подписании договора, уведомление рассылается только когда договор вступил в силу, т.е. с момента его подписания последним участником.- Уже подписанный договор может быть разорван в любой момент времени командой:
O TREATY BREAK <ID>
при этом всем участникам автоматически высылается уведомление о прекращении действия договора.- После подписания, или после разрыва (не путать с отказом от подписания), договор можно опубликовать на "стенке". Делается это командой:
O TREATY PUBLISH <ID>
договор выкладывается на всеобщее обозрение со всей историей подписания (и разрыва, если он имел место).- Список всех договоров в игре с участием Вашей расы, можно запросить через систему запросов.
#query treaties <GameName> <Password>
зы. только облагородить веб интерфейсом, а то команды никто писать не будет ...
Увидев ник Дэсперадо, вспомнил еще раз, что Раш Измайлов взял графику из Цив2 - во многом из-за этого, ИМХО, смог доделать e-civ - т.к. в результате этого смог сосредоточиться на главном - геймплее.
да, дипломатию я хочу сделать продуманную. для многопользовательской игры это важно.
серверную обвязку писать надо будет в последнюю очередь (не раньше следующей зимы наверно), и она будет играть роль сугубо информационную. все действия типа дипломатии, партий и т.п. будут производиться прямо из игры.
а в чем разница? что за грид?
для начала мне хватает той графики что есть
дикие животные будут неявно присутствовать. если и будут как-то отображаться то только в виде украшения.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
Для тех кто захочет помочь, еще одна задачка.
Визуализация параллельных ходов. Конечно, можно показывать движение каждого юнита, но тогда получится много избыточной информации. Например, два юнита движутся параллельно на близком расстоянии - выходит два раза игроку будет показано практически одно и то же, только с разной центровкой экрана. Выход здесь мне видится в том, чтобы улавливать такие моменты, когда несколько юнитов проходят поблизости друг от друга, и показывать их движения один раз. Центрироваться экран должен при этом по какому-то особому алгоритму, чтобы захватывать по возможности одновременные движения нескольких юнитов.
Для наглядности я нарисовал картинки. Три юнита движутся по карте (три трека из шариков). Два из них сливаются в один и продолжают движение, третий выруливает с юга и движется параллельно со "слитым". Разбить визуализацию можно на 5 "историй" (в одну историю движения не умещаются т.к. не влезают на один экран, но прямоугольники показывают истории а не экраны. можно представить что экран захватывает скажем 4 кружка в высоту и 4 в ширину): 1) первый юнит движется, 2) второй юнит движется, 3) оба движутся, сливаются и движутся дальше, 4) третий движется, 5) движутся 1-2 и 3 параллельно
Вообще тут есть всякие нюансы, например юниты могут двигаться в разных направлениях...
также время движения... например третий юнит мог пробежать свой маршрут до того как юнит 1-2 вообще дошел до этих мест.
в некоторых случаях нельзя перемещения юнитов изолировать друг от друга, т.е. какая-то часть пути юнита будет показана дважды.
будут какие идеи по алгоритму - высказывайте.
вообще идеально было бы если б кто-то его реализовал!
входные данные:
1) информация о движении юнитов (список юнитов, у каждого юнита список перемещений, перемещение характеризуется номером тика и координатами тайла. перемещения всегда делаются не далее чем на соседний тайл)
2) ширина и высота экрана в тайлах
p.s. кстати, как там ходы показывались в e-civ?
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
никак. на клиент приходил отчет с финальным положением юнитов. прошедшие битвы разве, что указывались на карте.
по алгоритму как-то не понял связи с ec2, у тебя же как в е-цив показывался финальное положение юнитов и бегунок, которым можно было отматать назад. что-то коренным образом меняется ?
крутить бегунок не совесм удобно, так можно что-то пропустить. не бдуешь же становиться в каждую точку карты и накручивать там бегунок, чтобы посмотреть что произошло. хоть положения вражеских юнитов и отображаются на миникарте, во время прокрутки, но они там в виде маленьких кружочков и какое-то мелкое движение можно пропустить. еслиб в начале нового хода можно было посмотреть "видео"-рапорт было бы гораздо лучше.
EC2 - разработка игры
Мастерская Steam - мои моды для Civilization V
Last Citadel - сайт игроков Warlords III
имхо "видео" сложный и плохой вариант. наверняка это будет скучное занятие сидеть и смотреть передвижения союзников, народ начнет перематывать и все равно пропускать. может подумать в другую сторону, как-то на финальной карте отрисовывать пунктиром передвижения ? сделать галочку, отобразить перемещения противников/союзников. места которые покажутся интересными, я бегунком пристально поизучаю. наверно можно цветами пунктира силу противника обозначать и тоже как-то фильтровать, что бы не отвлекаться на слабых разведчиков, если нужно.