Во многих играх, таких как Fallout (1,2), Neverwinter Nights 2: Storm of Zehir присутствует глобальная карта. Планирую в основу своей карты заложить подобие такой. Лично мне по душе все эти случайные встречи, возможность прочувствовать размер мира и расстояния между локациями, передвижения корованов и возможность их грабить. Добавит ли по вашему мнению это интереса от игры в такую карту?

Принятый ответ

Нет. В варе это утомит, имхо. Утомит и разработку, и игрока.
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
19
6 лет назад
1
Похожие вопросы:

ответ
Zeuz:
DazzleFirst, возможно ли как то создать локальный триггер при применении способности и уничтожить обратно?
ведь обычно локальные триггеры как правило при применении способности создаются в инициализации карты...
нет нужды выделять еще один триггер (помимо отлова) на заклинание, если оно не слишком громоздкое в плане исполнения.
Как сообщает товарищ nvc123:
Zeuz, лучше не использовать много триггеров
вообще нету такой ситуации в которой надо много триггеров
стоит обратить на это внимание.
Везде и всюду есть свои нюансы которые нужно учитывать. Если не выполнить задуманное с помощью одного триггера, то делаем два.
ответ
Megacomp, это не джасс а вджасс
проверь включен ли у тебя джассхелпер
так же не забывай что перед тем как нажать "проверка карты" карту нужно сохранить
ответ
Ну можно координаты камеры игрока. Но там нужен синк в кеше, чтобы небыло десинха, а это уже ни ГУИ.
Вот примитивный пример получение и сохранения координат камеры игрока:
scope PlayerRelated initializer InitPlayers

    globals
        force AllPlayers = null
        trigger gg_trg_PlayerLeft = null
        playerevent bj_enumPlayerEventId = null
        player array PL
        gamecache data
    endglobals

    function TriggerRegisterPlayerEventEnum takes nothing returns nothing
        call TriggerRegisterPlayerEvent( bj_destInRegionDiesTrig, GetEnumPlayer( ), bj_enumPlayerEventId )
    endfunction
    
    function TriggerRegisterForceEvent takes trigger trig, force forforce, playerevent id returns nothing
        set bj_destInRegionDiesTrig = trig
        set bj_enumPlayerEventId = id
        call ForForce( forforce, function TriggerRegisterPlayerEventEnum )
    endfunction
 
    function Trig_Player_Left_Actions takes nothing returns nothing
        call ForceRemovePlayer( AllPlayers, GetTriggerPlayer( ) )
    endfunction
    
    function IsSlotPlayer takes player pl returns boolean
        return GetPlayerSlotState( pl ) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController( pl ) == MAP_CONTROL_USER
    endfunction
    

    function InitPlayers takes nothing returns nothing
        set AllPlayers = CreateForce( )
        set gg_trg_PlayerLeft = CreateTrigger( )
        set data = InitGameCache( "Data.w3v" )
        
        set bj_forLoopAIndex = 0
        
        loop
        
            exitwhen bj_forLoopAIndex > bj_MAX_PLAYERS
        
            set PL[bj_forLoopAIndex] = Player( bj_forLoopAIndex )
            if IsSlotPlayer( PL[bj_forLoopAIndex] ) then
                call ForceAddPlayer( AllPlayers, PL[bj_forLoopAIndex] )
                call TriggerRegisterPlayerEvent( gg_trg_PlayerLeft, PL[bj_forLoopAIndex] , EVENT_PLAYER_LEAVE )
            endif
        
            set bj_forLoopAIndex = bj_forLoopAIndex + 1
        endloop
    
        call TriggerAddAction( gg_trg_PlayerLeft, function Trig_Player_Left_Actions )
    
    endfunction
endscope

function Trig_Get_Player_Screen_Cord_Conditions takes nothing returns boolean
    return true
endfunction

function Trig_Get_Player_Screen_Cord_Actions takes nothing returns nothing
    local player pl = GetTriggerPlayer( )
    local real dx = 0.00
    local real dy = 0.00

    
    if GetLocalPlayer( ) == pl then
        set dx = GetCameraEyePositionX( )
        set dy = GetCameraEyePositionY( )
    else
        set dx = 0.00
        set dy = 0.00
    endif

    call StoreReal( data, "Cord", "X", dx )
    call StoreReal( data, "Cord", "Y", dy )
    
    call TriggerSyncStart( )
    
    if GetLocalPlayer( ) == pl then
        call SyncStoredReal( data, "Cord", "X" )
        call SyncStoredReal( data, "Cord", "Y" )
    endif
    
    call TriggerSleepAction( 2.00 )

    call TriggerSyncReady( )
    
    set dx = GetStoredReal( data, "Cord", "X" )
    set dy = GetStoredReal( data, "Cord", "Y" )
    
    // далее делаем с коорданатами камеры что хочется!
    call PingMinimapEx( dx, dy, 3.00, 255, 255, 255, true )

endfunction

//===========================================================================
function InitTrig_Get_Player_Screen_Cord takes nothing returns nothing
    set gg_trg_Get_Player_Screen_Cord = CreateTrigger( )
    
    set bj_forLoopAIndex = 0
    
    loop
        exitwhen bj_forLoopAIndex > bj_MAX_PLAYERS
    
        if IsPlayerInForce( PL[bj_forLoopAIndex], AllPlayers ) then
            call TriggerRegisterPlayerChatEvent( gg_trg_Get_Player_Screen_Cord, PL[bj_forLoopAIndex], "-GetCord", true )
        endif
    
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    
    call TriggerAddCondition( gg_trg_Get_Player_Screen_Cord, Condition( function Trig_Get_Player_Screen_Cord_Conditions ) )
    call TriggerAddAction( gg_trg_Get_Player_Screen_Cord, function Trig_Get_Player_Screen_Cord_Actions )
endfunction
ответ
Всё, разобрался, вопрос снимаю)
ответ
ScopteRectuS, Переменные инициализируются при инициализации карты, она же вроде как глобальная udg_HeroGFL_owner. Или в коде карты насильно инициализировать?
Они же не локалки
ScopteRectuS, м, реально null возвращает боевая единицы. Смешно. Окей: И как ему определить созданную во время игры боевую единицу?

3
18
6 лет назад
3
Думаю, да.
0
32
6 лет назад
0
Не играл в такие игры, что такое глобальная карта?
5
21
6 лет назад
Отредактирован Raised
5
Вспомни Dragon Age - Origins. Хоть игровой мир и маленький, Локации не ощущаются крошечными как раз благодаря глобальной карте, т.к. используя такой прием проще создать антураж и мир насыщенный событиями. Как по мне, то это почти идеальное решение. Рекомендую обратить внимание на следующие статьи, если всерьез намерен такое провернуть:

3
20
6 лет назад
3
Если как в компании Рексара - почему бы и нет, стоит ввести
Плюс можно выделить на основной глобальной карте небольшую арену под случайные встречи, чтобы не было 10 лишних загрузок
1
2
6 лет назад
1
Лучше сделать огромную круговую карту...чтоб когда юниты доходили до края запада например - вышли с востока потом...не про телепорты идет речь...
1
2
6 лет назад
1
Zephir, имхо, неудачная часть Невера. случайные встречи там однообразные и унылые. в фолыче 2(1 почему -то не гамал, нужно исправиться срочно), встречи обманывались сейвом, и можно было припереть в финальный город сразу. последний раз гамал фолыч с солянкой модов, поэтому могу врать, но вроде и в оригинале можно в последнем городе разжиться краденой броней/оружием. сейв\лоад многораз. автор, учти пожалуйста плохой опыт этих, вопщемта, классных игр, делая свою. не жалей игрока. он сейвится, пусть переход в твое Запределье охраняют 999 драконов 999 уровня, мы обязательно сбагоюзим и прорвемся, будет только интереснее.
3
8
6 лет назад
3
Интерес добавит ЕСЛИ ландер постарается, тем более если сделать разные тайные проходы, мини ролики которые покажут всю красоту карты и мастерство ландера. Бери пример с готики 1-2 сделай закрытые зоны но которые часть видно, чтоб игрок туда хотел попасть. Да , надо будет сделать мини ограничения поначалу в виде квестов вокруг , чтоб по спирали открывался мир. Главное все по фэн шую . Все зависит от квестов и ландера.
1
32
6 лет назад
1
Нет. В варе это утомит, имхо. Утомит и разработку, и игрока.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.