Jump to content

Dizaka

Balancing Advisors
  • Posts

    482
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by Dizaka

  1. Can't start the alpha release for multiplayer play.  Get the following crash on selecting "login" for multiplayer lobby.

     

     

    Quote

    -------------------------------------
    Translated Report (Full Report Below)
    -------------------------------------

    Process:               pyrogenesis [29961]
    Path:                  /Applications/0 A.D..app/Contents/MacOS/pyrogenesis
    Identifier:            com.froissant.0ad.test
    Version:               0.0.27-rc1-27645 (0.0.27-rc1-27645)
    Code Type:             ARM-64 (Native)
    Parent Process:        launchd [1]
    User ID:               502

    Date/Time:             2023-05-21 11:49:36.8096 -0400
    OS Version:            macOS 13.3.1 (22E772610a)
    Report Version:        12
    Anonymous UUID:        EF933ABC-7C19-BB2D-5057-3F4B05C44CBA


    Time Awake Since Boot: 260000 seconds

    System Integrity Protection: enabled

    Crashed Thread:        0  main  Dispatch queue: com.apple.main-thread

    Exception Type:        EXC_BAD_ACCESS (SIGBUS)
    Exception Codes:       KERN_PROTECTION_FAILURE at 0x00000001054b8000
    Exception Codes:       0x0000000000000002, 0x00000001054b8000

    Termination Reason:    Namespace SIGNAL, Code 10 Bus error: 10
    Terminating Process:   exc handler [29961]

    VM Region Info: 0x1054b8000 is in 0x1054b8000-0x1054bc000;  bytes after start: 0  bytes before end: 16383
          REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
          dyld private memory         105478000-1054b8000    [  256K] rw-/rwx SM=PRV  
    --->  dyld private memory         1054b8000-1054bc000    [   16K] ---/--- SM=NUL  
          Kernel Alloc Once           1054bc000-1054c4000    [   32K] rw-/rwx SM=PRV  

    Thread 0 Crashed:: main Dispatch queue: com.apple.main-thread
    0   pyrogenesis                              0x102167ca4 __gmpn_cnd_add_n + 164
    1   pyrogenesis                              0x10214bb24 _nettle_ecc_mod_add + 96
    2   pyrogenesis                              0x10215060c _nettle_ecc_dup_th + 84
    3   pyrogenesis                              0x1021512b0 _nettle_ecc_mul_g_eh + 224
    4   pyrogenesis                              0x1021554d4 nettle_curve25519_mul_g + 276
    5   pyrogenesis                              0x10213ff9c edwards_curve_mul_g + 72
    6   pyrogenesis                              0x10213c1e0 wrap_nettle_pk_generate_keys + 6788
    7   pyrogenesis                              0x102102110 _gnutls_gen_ecdh_common_client_kx_int + 412
    8   pyrogenesis                              0x1021013a0 _gnutls_gen_ecdh_common_client_kx + 36
    9   pyrogenesis                              0x101fe6b04 _gnutls_send_client_kx_message + 280
    10  pyrogenesis                              0x101fdb630 handshake_client + 7084
    11  pyrogenesis                              0x101fd98d8 gnutls_handshake + 896
    12  pyrogenesis                              0x101f74ce8 gloox::GnuTLSBase::handshake() + 72
    13  pyrogenesis                              0x101f74a38 gloox::GnuTLSBase::decrypt(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) + 72
    14  pyrogenesis                              0x101f76e28 gloox::TLSDefault::decrypt(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) + 64
    15  pyrogenesis                              0x101ec80d4 gloox::ClientBase::handleReceivedData(gloox::ConnectionBase const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&) + 84
    16  pyrogenesis                              0x101ec08cc gloox::ConnectionTCPClient::recv(int) + 728
    17  pyrogenesis                              0x101ec4810 gloox::ClientBase::recv(int) + 96
    18  pyrogenesis                              0x1009399f8 RunGameOrAtlas(PS::span<char const* const>) + 7044
    19  pyrogenesis                              0x100937da4 main + 64
    20  dyld                                     0x18279bf28 start + 2236

    Thread 1:
    0   libsystem_pthread.dylib                  0x182aeed8c start_wqthread + 0

    Thread 2:: Task Mgr #0
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 3:: Task Mgr #1
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 4:: Task Mgr #3
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 5:: Task Mgr #4
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 6:: Task Mgr #7
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 7:: Task Mgr #2
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 8:: Task Mgr #6
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 9:: Task Mgr #5
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 10:: Task Mgr #8
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b6b204 Threading::WorkerThread::RunUntilDeath() + 292
    4   pyrogenesis                              0x100b6d334 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 11:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 12:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 13:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 14:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 15:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 16:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 17:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 18:: JS Helper
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x10186786c mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&) + 80
    3   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 19:: JS Wasm MachExceptionHandler
    0   libsystem_kernel.dylib                   0x182ab3f14 mach_msg2_trap + 8
    1   libsystem_kernel.dylib                   0x182ac6240 mach_msg2_internal + 80
    2   libsystem_kernel.dylib                   0x182abcb78 mach_msg_overwrite + 604
    3   libsystem_kernel.dylib                   0x182ab4290 mach_msg + 24
    4   pyrogenesis                              0x1018465c4 MachExceptionHandlerThread() + 248
    5   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 20:: caulk.messenger.shared:17
    0   libsystem_kernel.dylib                   0x182ab3e90 semaphore_wait_trap + 8
    1   caulk                                    0x18c112024 caulk::semaphore::timed_wait(double) + 212
    2   caulk                                    0x18c111ed8 caulk::concurrent::details::worker_thread::run() + 36
    3   caulk                                    0x18c111bc8 void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*>>>(void*) + 96
    4   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    5   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 21:: com.apple.audio.IOThread.client
    0   libsystem_kernel.dylib                   0x182ab3f14 mach_msg2_trap + 8
    1   libsystem_kernel.dylib                   0x182ac6240 mach_msg2_internal + 80
    2   libsystem_kernel.dylib                   0x182abcb78 mach_msg_overwrite + 604
    3   libsystem_kernel.dylib                   0x182ab4290 mach_msg + 24
    4   CoreAudio                                0x184edd624 HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 104
    5   CoreAudio                                0x184dcad14 HALC_ProxyIOContext::IOWorkLoop() + 3516
    6   CoreAudio                                0x184dc987c invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int) + 116
    7   CoreAudio                                0x184f2c564 HALB_IOThread::Entry(void*) + 88
    8   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    9   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 22:
    0   libsystem_pthread.dylib                  0x182aeed8c start_wqthread + 0

    Thread 23:: CSoundManagerWorker
    0   libsystem_kernel.dylib                   0x182ab750c __semwait_signal + 8
    1   libsystem_c.dylib                        0x1829982d0 nanosleep + 220
    2   pyrogenesis                              0x100fadd84 SDL_Delay_REAL + 104
    3   pyrogenesis                              0x100e57f98 SDL_Delay + 36
    4   pyrogenesis                              0x100bade04 CSoundManagerWorker::Run() + 164
    5   pyrogenesis                              0x100badd18 Threading::HandleExceptionsBase<&CSoundManagerWorker::RunThread(CSoundManagerWorker*), void (*)(CSoundManagerWorker*)>::Wrapper(CSoundManagerWorker*) + 128
    6   pyrogenesis                              0x100bae290 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(CSoundManagerWorker*), CSoundManagerWorker*>>(void*) + 64
    7   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    8   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 24:: CUserReportWorker
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100b739b8 CUserReporterWorker::Run() + 680
    4   pyrogenesis                              0x100b73620 Threading::HandleExceptionsBase<&CUserReporterWorker::RunThread(CUserReporterWorker*), void (*)(CUserReporterWorker*)>::Wrapper(CUserReporterWorker*) + 124
    5   pyrogenesis                              0x100b75264 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(CUserReporterWorker*), CUserReporterWorker*>>(void*) + 64
    6   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    7   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 25:: SDLTimer
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   pyrogenesis                              0x100f8d56c SDL_CondWaitTimeout_REAL + 208
    3   pyrogenesis                              0x100f8cf24 SDL_SemWaitTimeout_REAL + 196
    4   pyrogenesis                              0x100eeb5d4 SDL_TimerThread + 624
    5   pyrogenesis                              0x100eead84 SDL_RunThread + 88
    6   pyrogenesis                              0x100f8c7a0 RunThread + 24
    7   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    8   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 26:
    0   libsystem_pthread.dylib                  0x182aeed8c start_wqthread + 0

    Thread 27:
    0   libsystem_pthread.dylib                  0x182aeed8c start_wqthread + 0

    Thread 28:
    0   libsystem_pthread.dylib                  0x182aeed8c start_wqthread + 0

    Thread 29:: com.apple.NSEventThread
    0   libsystem_kernel.dylib                   0x182ab3f14 mach_msg2_trap + 8
    1   libsystem_kernel.dylib                   0x182ac6240 mach_msg2_internal + 80
    2   libsystem_kernel.dylib                   0x182abcb78 mach_msg_overwrite + 604
    3   libsystem_kernel.dylib                   0x182ab4290 mach_msg + 24
    4   CoreFoundation                           0x182bd28b8 __CFRunLoopServiceMachPort + 160
    5   CoreFoundation                           0x182bd1198 __CFRunLoopRun + 1208
    6   CoreFoundation                           0x182bd058c CFRunLoopRunSpecific + 612
    7   AppKit                                   0x185f1a508 _NSEventThread + 172
    8   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    9   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 30:: TextureConverter
    0   libsystem_kernel.dylib                   0x182ab7710 __psynch_cvwait + 8
    1   libsystem_pthread.dylib                  0x182af4574 _pthread_cond_wait + 1232
    2   libc++.1.dylib                           0x182a1cef0 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 28
    3   pyrogenesis                              0x100c34ce0 CTextureConverter::RunThread(CTextureConverter*) + 244
    4   pyrogenesis                              0x100c357cc void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(CTextureConverter*), CTextureConverter*>>(void*) + 64
    5   libsystem_pthread.dylib                  0x182af3fa8 _pthread_start + 148
    6   libsystem_pthread.dylib                  0x182aeeda0 thread_start + 8

    Thread 31:
    0   libsystem_pthread.dylib                  0x182aeed8c start_wqthread + 0


    Thread 0 crashed with ARM Thread State (64-bit):
        x0: 0xffffffffffffffff   x1: 0x000000014031e410   x2: 0x000000014031e420   x3: 0x00000001054b7fd8
        x4: 0x0000000000000004   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x0000000000000000
        x8: 0x0000000000000000   x9: 0x0000000000000000  x10: 0x0000000000000000  x11: 0x0000000000000000
       x12: 0x0000000000000000  x13: 0x0000000000000000  x14: 0x00000000ffffffff  x15: 0x0000000000000000
       x16: 0xd7960001054cc080  x17: 0x000000013ee3bcd0  x18: 0xfffffffffffffe00  x19: 0x0000600000034000
       x20: 0x0000600003550980  x21: 0x00000001043cf640  x22: 0x0000000104066e79  x23: 0x000000010432e000
       x24: 0x0000000000000000  x25: 0x00000001043cf5d8  x26: 0x000000016f4cb340  x27: 0x000000016f4cb350
       x28: 0x0000000104066f50   fp: 0x000000016f4ca370   lr: 0x000000010214bb24
        sp: 0x000000016f4ca340   pc: 0x0000000102167ca4 cpsr: 0x40001000
       far: 0x00000001054b8000  esr: 0x92000007 (Data Abort) byte read Translation fault

    Binary Images:
           0x100934000 -        0x104293fff com.froissant.0ad.test (0.0.27-rc1-27645) <c6b43cb8-2df7-3ff2-a855-27c0e895607d> /Applications/0 A.D..app/Contents/MacOS/pyrogenesis
           0x107ae8000 -        0x107c1bfff com.apple.audio.units.Components (1.14) <3318bd64-e64f-3e69-991d-605d1bc10d7d> /System/Library/Components/CoreAudio.component/Contents/MacOS/CoreAudio
           0x12bb24000 -        0x12c433fff com.apple.audio.AudioDSPComponents (1.0) <8bb98236-6907-3ad1-8a3a-54552b32953b> /System/Library/Components/AudioDSP.component/Contents/MacOS/AudioDSP
           0x12e894000 -        0x12e89ffff libobjc-trampolines.dylib (*) <80f14f3d-d099-3693-a8e0-eb9a526b1790> /usr/lib/libobjc-trampolines.dylib
           0x13e738000 -        0x13e7a3fff com.apple.AppleMetalOpenGLRenderer (1.0) <7651840d-f268-3dea-ab6e-979cd46d3b2b> /System/Library/Extensions/AppleMetalOpenGLRenderer.bundle/Contents/MacOS/AppleMetalOpenGLRenderer
           0x182796000 -        0x18282453b dyld (*) <ac277a36-1808-327a-8761-cca585421212> /usr/lib/dyld
           0x182aed000 -        0x182af9fff libsystem_pthread.dylib (*) <b401cfb3-8dfe-32db-92b3-ba8af0f8ca6e> /usr/lib/system/libsystem_pthread.dylib
           0x182ab3000 -        0x182aecfe7 libsystem_kernel.dylib (*) <7acbd9bc-d056-310e-858d-81b116cf6d28> /usr/lib/system/libsystem_kernel.dylib
           0x182a0a000 -        0x182a96ff7 libc++.1.dylib (*) <79cab92f-5e03-31e7-b2bd-feafdfd2bbde> /usr/lib/libc++.1.dylib
           0x18c110000 -        0x18c138fff com.apple.audio.caulk (1.0) <06456788-36d4-3e9d-ab9a-eab934756fe4> /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
           0x184bee000 -        0x185281fff com.apple.audio.CoreAudio (5.0) <41fa6c48-7a9f-3181-a122-953cfaa18117> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
           0x18298b000 -        0x182a09ff7 libsystem_c.dylib (*) <9277aff7-3cc3-30d0-99b7-c62680da95cf> /usr/lib/system/libsystem_c.dylib
           0x182b53000 -        0x18302cfff com.apple.CoreFoundation (6.9) <b4fdaece-9727-3969-b014-27f7f24c8e01> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
           0x185db7000 -        0x186cc5fff com.apple.AppKit (6.9) <cc3e5215-4cd7-364c-8750-6eb7002720ce> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
                   0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???

    External Modification Summary:
      Calls made by other processes targeting this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by this process:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0
      Calls made by all processes on this machine:
        task_for_pid: 0
        thread_create: 0
        thread_set_state: 0

    VM Region Summary:
    ReadOnly portion of Libraries: Total=1.2G resident=0K(0%) swapped_out_or_unallocated=1.2G(100%)
    Writable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)

                                    VIRTUAL   REGION 
    REGION TYPE                        SIZE    COUNT (non-coalesced) 
    ===========                     =======  ======= 
    Accelerate framework               384K        3 
    Activity Tracing                   256K        1 
    CG backing stores                 6720K       12 
    CG image                          2528K       12 
    ColorSync                          576K       26 
    CoreAnimation                      176K       11 
    CoreGraphics                        64K        4 
    CoreGraphics (reserved)             16K        1         reserved VM address space (unallocated)
    CoreUI image data                  784K       10 
    Foundation                          16K        1 
    Foundation (reserved)               16K        1         reserved VM address space (unallocated)
    Kernel Alloc Once                   32K        1 
    MALLOC                           648.0M       73 
    MALLOC guard page                  192K       10 
    MALLOC_MEDIUM (reserved)           1.1G       10         reserved VM address space (unallocated)
    MALLOC_NANO (reserved)           128.0M        1         reserved VM address space (unallocated)
    OpenGL GLSL                        256K        3 
    STACK GUARD                       56.5M       32 
    Stack                             36.5M       32 
    VM_ALLOCATE                        2.0G       74 
    VM_ALLOCATE (reserved)             256K        9         reserved VM address space (unallocated)
    __AUTH                             819K      199 
    __AUTH_CONST                      14.7M      374 
    __CTF                               824        1 
    __DATA                            3986K      364 
    __DATA_CONST                      17.8M      381 
    __DATA_DIRTY                       826K      126 
    __FONT_DATA                        2352        1 
    __GLSLBUILTINS                    5174K        1 
    __LINKEDIT                       817.6M        6 
    __OBJC_RO                         66.2M        1 
    __OBJC_RW                         2011K        1 
    __TEXT                           367.0M      397 
    dyld private memory                272K        2 
    mapped file                      180.7M       27 
    shared memory                      976K       19 
    ===========                     =======  ======= 
    TOTAL                              5.4G     2227 
    TOTAL, minus reserved VM space     4.2G     2227 

    -----------
    Full Report
    -----------

    {"app_name":"pyrogenesis","timestamp":"2023-05-21 11:49:37.00 -0400","app_version":"0.0.27-rc1-27645","slice_uuid":"c6b43cb8-2df7-3ff2-a855-27c0e895607d","build_version":"0.0.27-rc1-27645","platform":1,"bundleID":"com.froissant.0ad.test","share_with_app_devs":1,"is_first_party":0,"bug_type":"309","os_version":"macOS 13.3.1 (22E772610a)","roots_installed":0,"name":"pyrogenesis","incident_id":"D66C8611-B51F-46F5-810D-256C670AEAB9"}
    {
      "uptime" : 260000,
      "procRole" : "Foreground",
      "version" : 2,
      "userID" : 502,
      "deployVersion" : 210,
      "modelCode" : "MacBookPro18,2",
      "coalitionID" : 21178,
      "osVersion" : {
        "train" : "macOS 13.3.1",
        "build" : "22E772610a",
        "releaseType" : "User"
      },
      "captureTime" : "2023-05-21 11:49:36.8096 -0400",
      "incident" : "D66C8611-B51F-46F5-810D-256C670AEAB9",
      "pid" : 29961,
      "translated" : false,
      "cpuType" : "ARM-64",
      "roots_installed" : 0,
      "bug_type" : "309",
      "procLaunch" : "2023-05-21 11:48:32.0814 -0400",
      "procStartAbsTime" : 6338700342583,
      "procExitAbsTime" : 6340253411216,
      "procName" : "pyrogenesis",
      "procPath" : "\/Applications\/0 A.D..app\/Contents\/MacOS\/pyrogenesis",
      "bundleInfo" : {"CFBundleShortVersionString":"0.0.27-rc1-27645","CFBundleVersion":"0.0.27-rc1-27645","CFBundleIdentifier":"com.froissant.0ad.test"},
      "storeInfo" : {"deviceIdentifierForVendor":"191EA99C-CBC7-5963-8E1E-03806486FE99","thirdParty":true},
      "parentProc" : "launchd",
      "parentPid" : 1,
      "coalitionName" : "com.froissant.0ad.test",
      "crashReporterKey" : "EF933ABC-7C19-BB2D-5057-3F4B05C44CBA",
      "throttleTimeout" : 2147483647,
      "codeSigningID" : "com.froissant.0ad.test",
      "codeSigningTeamID" : "7F574G3D4R",
      "codeSigningFlags" : 570499857,
      "codeSigningValidationCategory" : 6,
      "codeSigningTrustLevel" : 0,
      "sip" : "enabled",
      "vmRegionInfo" : "0x1054b8000 is in 0x1054b8000-0x1054bc000;  bytes after start: 0  bytes before end: 16383\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      dyld private memory         105478000-1054b8000    [  256K] rw-\/rwx SM=PRV  \n--->  dyld private memory         1054b8000-1054bc000    [   16K] ---\/--- SM=NUL  \n      Kernel Alloc Once           1054bc000-1054c4000    [   32K] rw-\/rwx SM=PRV  ",
      "exception" : {"codes":"0x0000000000000002, 0x00000001054b8000","rawCodes":[2,4383801344],"type":"EXC_BAD_ACCESS","signal":"SIGBUS","subtype":"KERN_PROTECTION_FAILURE at 0x00000001054b8000"},
      "termination" : {"flags":0,"code":10,"namespace":"SIGNAL","indicator":"Bus error: 10","byProc":"exc handler","byPid":29961},
      "vmregioninfo" : "0x1054b8000 is in 0x1054b8000-0x1054bc000;  bytes after start: 0  bytes before end: 16383\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      dyld private memory         105478000-1054b8000    [  256K] rw-\/rwx SM=PRV  \n--->  dyld private memory         1054b8000-1054bc000    [   16K] ---\/--- SM=NUL  \n      Kernel Alloc Once           1054bc000-1054c4000    [   32K] rw-\/rwx SM=PRV  ",
      "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
      "faultingThread" : 0,
      "threads" : [{"triggered":true,"id":1708067,"threadState":{"x":[{"value":18446744073709551615},{"value":5371978768},{"value":5371978784},{"value":4383801304},{"value":4},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":4294967295},{"value":0},{"value":15534603969044988032},{"value":5350079696},{"value":18446744073709551104},{"value":105553116479488},{"value":105553172171136},{"value":4366071360,"symbolLocation":0,"symbol":"g_Profiler2"},{"value":4362497657},{"value":4365410304},{"value":0},{"value":4366071256,"symbolLocation":0,"symbol":"g_frequencyFilter"},{"value":6162264896},{"value":6162264912},{"value":4362497872}],"flavor":"ARM_THREAD_STATE64","lr":{"value":4329880356},"cpsr":{"value":1073745920},"fp":{"value":6162260848},"sp":{"value":6162260800},"esr":{"value":2449473543,"description":"(Data Abort) byte read Translation fault"},"pc":{"value":4329995428,"matchesCrashFrame":1},"far":{"value":4383801344}},"name":"main","queue":"com.apple.main-thread","frames":[{"imageOffset":25377956,"symbol":"__gmpn_cnd_add_n","symbolLocation":164,"imageIndex":0},{"imageOffset":25262884,"symbol":"_nettle_ecc_mod_add","symbolLocation":96,"imageIndex":0},{"imageOffset":25282060,"symbol":"_nettle_ecc_dup_th","symbolLocation":84,"imageIndex":0},{"imageOffset":25285296,"symbol":"_nettle_ecc_mul_g_eh","symbolLocation":224,"imageIndex":0},{"imageOffset":25302228,"symbol":"nettle_curve25519_mul_g","symbolLocation":276,"imageIndex":0},{"imageOffset":25214876,"symbol":"edwards_curve_mul_g","symbolLocation":72,"imageIndex":0},{"imageOffset":25199072,"symbol":"wrap_nettle_pk_generate_keys","symbolLocation":6788,"imageIndex":0},{"imageOffset":24961296,"symbol":"_gnutls_gen_ecdh_common_client_kx_int","symbolLocation":412,"imageIndex":0},{"imageOffset":24957856,"symbol":"_gnutls_gen_ecdh_common_client_kx","symbolLocation":36,"imageIndex":0},{"imageOffset":23800580,"symbol":"_gnutls_send_client_kx_message","symbolLocation":280,"imageIndex":0},{"imageOffset":23754288,"symbol":"handshake_client","symbolLocation":7084,"imageIndex":0},{"imageOffset":23746776,"symbol":"gnutls_handshake","symbolLocation":896,"imageIndex":0},{"imageOffset":23334120,"symbol":"gloox::GnuTLSBase::handshake()","symbolLocation":72,"imageIndex":0},{"imageOffset":23333432,"symbol":"gloox::GnuTLSBase::decrypt(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)","symbolLocation":72,"imageIndex":0},{"imageOffset":23342632,"symbol":"gloox::TLSDefault::decrypt(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)","symbolLocation":64,"imageIndex":0},{"imageOffset":22626516,"symbol":"gloox::ClientBase::handleReceivedData(gloox::ConnectionBase const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&)","symbolLocation":84,"imageIndex":0},{"imageOffset":22595788,"symbol":"gloox::ConnectionTCPClient::recv(int)","symbolLocation":728,"imageIndex":0},{"imageOffset":22611984,"symbol":"gloox::ClientBase::recv(int)","symbolLocation":96,"imageIndex":0},{"imageOffset":23032,"symbol":"RunGameOrAtlas(PS::span<char const* const>)","symbolLocation":7044,"imageIndex":0},{"imageOffset":15780,"symbol":"main","symbolLocation":64,"imageIndex":0},{"imageOffset":24360,"symbol":"start","symbolLocation":2236,"imageIndex":5}]},{"id":1708377,"frames":[{"imageOffset":7564,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":1708378,"name":"Task Mgr #0","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708379,"name":"Task Mgr #1","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708380,"name":"Task Mgr #3","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708381,"name":"Task Mgr #4","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708382,"name":"Task Mgr #7","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708383,"name":"Task Mgr #2","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708384,"name":"Task Mgr #6","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708385,"name":"Task Mgr #5","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708386,"name":"Task Mgr #8","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2322948,"symbol":"Threading::WorkerThread::RunUntilDeath()","symbolLocation":292,"imageIndex":0},{"imageOffset":2331444,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(Threading::WorkerThread*), Threading::WorkerThread*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708388,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708389,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708390,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708391,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708392,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708393,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708394,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708395,"name":"JS Helper","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":15939692,"symbol":"mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)","symbolLocation":80,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708396,"name":"JS Wasm MachExceptionHandler","frames":[{"imageOffset":3860,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":78400,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":7},{"imageOffset":39800,"symbol":"mach_msg_overwrite","symbolLocation":604,"imageIndex":7},{"imageOffset":4752,"symbol":"mach_msg","symbolLocation":24,"imageIndex":7},{"imageOffset":15803844,"symbol":"MachExceptionHandlerThread()","symbolLocation":248,"imageIndex":0},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708406,"name":"caulk.messenger.shared:17","frames":[{"imageOffset":3728,"symbol":"semaphore_wait_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":8228,"symbol":"caulk::semaphore::timed_wait(double)","symbolLocation":212,"imageIndex":9},{"imageOffset":7896,"symbol":"caulk::concurrent::details::worker_thread::run()","symbolLocation":36,"imageIndex":9},{"imageOffset":7112,"symbol":"void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*>>>(void*)","symbolLocation":96,"imageIndex":9},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708434,"name":"com.apple.audio.IOThread.client","frames":[{"imageOffset":3860,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":78400,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":7},{"imageOffset":39800,"symbol":"mach_msg_overwrite","symbolLocation":604,"imageIndex":7},{"imageOffset":4752,"symbol":"mach_msg","symbolLocation":24,"imageIndex":7},{"imageOffset":3077668,"symbol":"HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int)","symbolLocation":104,"imageIndex":10},{"imageOffset":1953044,"symbol":"HALC_ProxyIOContext::IOWorkLoop()","symbolLocation":3516,"imageIndex":10},{"imageOffset":1947772,"symbol":"invocation function for block in HALC_ProxyIOContext::HALC_ProxyIOContext(unsigned int, unsigned int)","symbolLocation":116,"imageIndex":10},{"imageOffset":3401060,"symbol":"HALB_IOThread::Entry(void*)","symbolLocation":88,"imageIndex":10},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708446,"frames":[{"imageOffset":7564,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":1708449,"name":"CSoundManagerWorker","frames":[{"imageOffset":17676,"symbol":"__semwait_signal","symbolLocation":8,"imageIndex":7},{"imageOffset":53968,"symbol":"nanosleep","symbolLocation":220,"imageIndex":11},{"imageOffset":6790532,"symbol":"SDL_Delay_REAL","symbolLocation":104,"imageIndex":0},{"imageOffset":5390232,"symbol":"SDL_Delay","symbolLocation":36,"imageIndex":0},{"imageOffset":2596356,"symbol":"CSoundManagerWorker::Run()","symbolLocation":164,"imageIndex":0},{"imageOffset":2596120,"symbol":"Threading::HandleExceptionsBase<&CSoundManagerWorker::RunThread(CSoundManagerWorker*), void (*)(CSoundManagerWorker*)>::Wrapper(CSoundManagerWorker*)","symbolLocation":128,"imageIndex":0},{"imageOffset":2597520,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(CSoundManagerWorker*), CSoundManagerWorker*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708450,"name":"CUserReportWorker","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":2357688,"symbol":"CUserReporterWorker::Run()","symbolLocation":680,"imageIndex":0},{"imageOffset":2356768,"symbol":"Threading::HandleExceptionsBase<&CUserReporterWorker::RunThread(CUserReporterWorker*), void (*)(CUserReporterWorker*)>::Wrapper(CUserReporterWorker*)","symbolLocation":124,"imageIndex":0},{"imageOffset":2364004,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(CUserReporterWorker*), CUserReporterWorker*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708451,"name":"SDLTimer","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":6657388,"symbol":"SDL_CondWaitTimeout_REAL","symbolLocation":208,"imageIndex":0},{"imageOffset":6655780,"symbol":"SDL_SemWaitTimeout_REAL","symbolLocation":196,"imageIndex":0},{"imageOffset":5993940,"symbol":"SDL_TimerThread","symbolLocation":624,"imageIndex":0},{"imageOffset":5991812,"symbol":"SDL_RunThread","symbolLocation":88,"imageIndex":0},{"imageOffset":6653856,"symbol":"RunThread","symbolLocation":24,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708462,"frames":[{"imageOffset":7564,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":1708486,"frames":[{"imageOffset":7564,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":1708487,"frames":[{"imageOffset":7564,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]},{"id":1708508,"name":"com.apple.NSEventThread","frames":[{"imageOffset":3860,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":7},{"imageOffset":78400,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":7},{"imageOffset":39800,"symbol":"mach_msg_overwrite","symbolLocation":604,"imageIndex":7},{"imageOffset":4752,"symbol":"mach_msg","symbolLocation":24,"imageIndex":7},{"imageOffset":522424,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":12},{"imageOffset":516504,"symbol":"__CFRunLoopRun","symbolLocation":1208,"imageIndex":12},{"imageOffset":513420,"symbol":"CFRunLoopRunSpecific","symbolLocation":612,"imageIndex":12},{"imageOffset":1455368,"symbol":"_NSEventThread","symbolLocation":172,"imageIndex":13},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708560,"name":"TextureConverter","frames":[{"imageOffset":18192,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":7},{"imageOffset":30068,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":6},{"imageOffset":77552,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":8},{"imageOffset":3149024,"symbol":"CTextureConverter::RunThread(CTextureConverter*)","symbolLocation":244,"imageIndex":0},{"imageOffset":3151820,"symbol":"void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, void (*)(CTextureConverter*), CTextureConverter*>>(void*)","symbolLocation":64,"imageIndex":0},{"imageOffset":28584,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":6},{"imageOffset":7584,"symbol":"thread_start","symbolLocation":8,"imageIndex":6}]},{"id":1708578,"frames":[{"imageOffset":7564,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":6}]}],
      "usedImages" : [
      {
        "source" : "P",
        "arch" : "arm64",
        "base" : 4304617472,
        "CFBundleShortVersionString" : "0.0.27-rc1-27645",
        "CFBundleIdentifier" : "com.froissant.0ad.test",
        "size" : 60162048,
        "uuid" : "c6b43cb8-2df7-3ff2-a855-27c0e895607d",
        "path" : "\/Applications\/0 A.D..app\/Contents\/MacOS\/pyrogenesis",
        "name" : "pyrogenesis",
        "CFBundleVersion" : "0.0.27-rc1-27645"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 4423843840,
        "CFBundleShortVersionString" : "1.14",
        "CFBundleIdentifier" : "com.apple.audio.units.Components",
        "size" : 1261568,
        "uuid" : "3318bd64-e64f-3e69-991d-605d1bc10d7d",
        "path" : "\/System\/Library\/Components\/CoreAudio.component\/Contents\/MacOS\/CoreAudio",
        "name" : "CoreAudio",
        "CFBundleVersion" : "1.14"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 5028069376,
        "CFBundleShortVersionString" : "1.0",
        "CFBundleIdentifier" : "com.apple.audio.AudioDSPComponents",
        "size" : 9502720,
        "uuid" : "8bb98236-6907-3ad1-8a3a-54552b32953b",
        "path" : "\/System\/Library\/Components\/AudioDSP.component\/Contents\/MacOS\/AudioDSP",
        "name" : "AudioDSP",
        "CFBundleVersion" : "1"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 5075714048,
        "size" : 49152,
        "uuid" : "80f14f3d-d099-3693-a8e0-eb9a526b1790",
        "path" : "\/usr\/lib\/libobjc-trampolines.dylib",
        "name" : "libobjc-trampolines.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 5342724096,
        "CFBundleShortVersionString" : "1.0",
        "CFBundleIdentifier" : "com.apple.AppleMetalOpenGLRenderer",
        "size" : 442368,
        "uuid" : "7651840d-f268-3dea-ab6e-979cd46d3b2b",
        "path" : "\/System\/Library\/Extensions\/AppleMetalOpenGLRenderer.bundle\/Contents\/MacOS\/AppleMetalOpenGLRenderer",
        "name" : "AppleMetalOpenGLRenderer",
        "CFBundleVersion" : "1"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6483959808,
        "size" : 582972,
        "uuid" : "ac277a36-1808-327a-8761-cca585421212",
        "path" : "\/usr\/lib\/dyld",
        "name" : "dyld"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6487461888,
        "size" : 53248,
        "uuid" : "b401cfb3-8dfe-32db-92b3-ba8af0f8ca6e",
        "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
        "name" : "libsystem_pthread.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6487224320,
        "size" : 237544,
        "uuid" : "7acbd9bc-d056-310e-858d-81b116cf6d28",
        "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
        "name" : "libsystem_kernel.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6486532096,
        "size" : 577528,
        "uuid" : "79cab92f-5e03-31e7-b2bd-feafdfd2bbde",
        "path" : "\/usr\/lib\/libc++.1.dylib",
        "name" : "libc++.1.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6644891648,
        "CFBundleShortVersionString" : "1.0",
        "CFBundleIdentifier" : "com.apple.audio.caulk",
        "size" : 167936,
        "uuid" : "06456788-36d4-3e9d-ab9a-eab934756fe4",
        "path" : "\/System\/Library\/PrivateFrameworks\/caulk.framework\/Versions\/A\/caulk",
        "name" : "caulk"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6522068992,
        "CFBundleShortVersionString" : "5.0",
        "CFBundleIdentifier" : "com.apple.audio.CoreAudio",
        "size" : 6897664,
        "uuid" : "41fa6c48-7a9f-3181-a122-953cfaa18117",
        "path" : "\/System\/Library\/Frameworks\/CoreAudio.framework\/Versions\/A\/CoreAudio",
        "name" : "CoreAudio",
        "CFBundleVersion" : "5.0"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6486011904,
        "size" : 520184,
        "uuid" : "9277aff7-3cc3-30d0-99b7-c62680da95cf",
        "path" : "\/usr\/lib\/system\/libsystem_c.dylib",
        "name" : "libsystem_c.dylib"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6487879680,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.CoreFoundation",
        "size" : 5087232,
        "uuid" : "b4fdaece-9727-3969-b014-27f7f24c8e01",
        "path" : "\/System\/Library\/Frameworks\/CoreFoundation.framework\/Versions\/A\/CoreFoundation",
        "name" : "CoreFoundation",
        "CFBundleVersion" : "1971"
      },
      {
        "source" : "P",
        "arch" : "arm64e",
        "base" : 6540718080,
        "CFBundleShortVersionString" : "6.9",
        "CFBundleIdentifier" : "com.apple.AppKit",
        "size" : 15790080,
        "uuid" : "cc3e5215-4cd7-364c-8750-6eb7002720ce",
        "path" : "\/System\/Library\/Frameworks\/AppKit.framework\/Versions\/C\/AppKit",
        "name" : "AppKit",
        "CFBundleVersion" : "2299.50.120"
      },
      {
        "size" : 0,
        "source" : "A",
        "base" : 0,
        "uuid" : "00000000-0000-0000-0000-000000000000"
      }
    ],
      "sharedCache" : {
      "base" : 6483296256,
      "size" : 3539582976,
      "uuid" : "a52a6d6b-ad23-3f37-b4f1-4b6316acd74c"
    },
      "vmSummary" : "ReadOnly portion of Libraries: Total=1.2G resident=0K(0%) swapped_out_or_unallocated=1.2G(100%)\nWritable regions: Total=1.9G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.9G(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nAccelerate framework               384K        3 \nActivity Tracing                   256K        1 \nCG backing stores                 6720K       12 \nCG image                          2528K       12 \nColorSync                          576K       26 \nCoreAnimation                      176K       11 \nCoreGraphics                        64K        4 \nCoreGraphics (reserved)             16K        1         reserved VM address space (unallocated)\nCoreUI image data                  784K       10 \nFoundation                          16K        1 \nFoundation (reserved)               16K        1         reserved VM address space (unallocated)\nKernel Alloc Once                   32K        1 \nMALLOC                           648.0M       73 \nMALLOC guard page                  192K       10 \nMALLOC_MEDIUM (reserved)           1.1G       10         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           128.0M        1         reserved VM address space (unallocated)\nOpenGL GLSL                        256K        3 \nSTACK GUARD                       56.5M       32 \nStack                             36.5M       32 \nVM_ALLOCATE                        2.0G       74 \nVM_ALLOCATE (reserved)             256K        9         reserved VM address space (unallocated)\n__AUTH                             819K      199 \n__AUTH_CONST                      14.7M      374 \n__CTF                               824        1 \n__DATA                            3986K      364 \n__DATA_CONST                      17.8M      381 \n__DATA_DIRTY                       826K      126 \n__FONT_DATA                        2352        1 \n__GLSLBUILTINS                    5174K        1 \n__LINKEDIT                       817.6M        6 \n__OBJC_RO                         66.2M        1 \n__OBJC_RW                         2011K        1 \n__TEXT                           367.0M      397 \ndyld private memory                272K        2 \nmapped file                      180.7M       27 \nshared memory                      976K       19 \n===========                     =======  ======= \nTOTAL                              5.4G     2227 \nTOTAL, minus reserved VM space     4.2G     2227 \n",
      "legacyInfo" : {
      "threadTriggered" : {
        "name" : "main",
        "queue" : "com.apple.main-thread"
      }
    },
      "logWritingSignature" : "f79a5fd6f630cc5b86d7546dd63ecca99ba61072",
      "trialInfo" : {
      "rollouts" : [
        {
          "rolloutId" : "5fb4245a1bbfe8005e33a1e1",
          "factorPackIds" : {

          },
          "deploymentId" : 240000021
        },
        {
          "rolloutId" : "60f8ddccefea4203d95cbeef",
          "factorPackIds" : {

          },
          "deploymentId" : 240000025
        }
      ],
      "experiments" : [
        {
          "treatmentId" : "c28e4ee6-1b08-4f90-8e05-2809e78310a3",
          "experimentId" : "6317d2003d24842ff850182a",
          "deploymentId" : 400000013
        },
        {
          "treatmentId" : "6dd670af-0633-45e4-ae5f-122ae4df02be",
          "experimentId" : "64406ba83deb637ac8a04419",
          "deploymentId" : 900000005
        }
      ]
    }
    }

    Model: MacBookPro18,2, BootROM 8422.100.650, proc 10:8:2 processors, 32 GB, SMC 
    Graphics: Apple M1 Max, Apple M1 Max, Built-In
    Display: LS49AG95, 5120 x 1440, Main, MirrorOff, Online
    Display: M28U, 5120 x 2880 (5K/UHD+ - Ultra High Definition Plus), MirrorOff, Online
    Display: M28U, 2560 x 1440 (QHD/WQHD - Wide Quad High Definition), MirrorOff, Online
    Memory Module: LPDDR5, Samsung
    AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x4387), wl0: Mar  8 2023 18:27:05 version 20.96.27.0.8.7.144 FWID 01-ec2ac09e
    Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
    Network Service: Wi-Fi, AirPort, en0
    PCI Card: ethernet, Ethernet Controller, Thunderbolt@3,0,0
    USB Device: USB31Bus
    USB Device: USB31Bus
    USB Device: USB3.0 Hub
    USB Device: TS4 USB3.2 Gen2 HUB
    USB Device: TS4 USB3.2 Gen2 HUB
    USB Device: TS4 USB3.2 Gen2 HUB
    USB Device: TS4 USB2.0 Hub
    USB Device: TPS DMC Family
    USB Device: TS4 USB2.0 HUB
    USB Device: composite_device
    USB Device: TS4 USB2.0 HUB
    USB Device: TS4 USB2.0 HUB
    USB Device: Freestyle Edge RGB Keyboard
    USB Device: USB Receiver
    USB Device: USB31Bus
    Thunderbolt Bus: MacBook Pro, Apple Inc.
    Thunderbolt Bus: MacBook Pro, Apple Inc.
    Thunderbolt Bus: MacBook Pro, Apple Inc.
    Thunderbolt Device: TS4, CalDigit, Inc., 1, 39.1
     

     

  2. Issue:  People use garrisoning to take off targetting off units.

    Example:  Someone pushes with barracks using garrisons/ungarrisons from said barracks.  That means that targetting of 30 units can be reset by garrisoning them in 3 barracks.  Ungarrisoning instantly makes it possible to kill units that are capturing barracks.

    Suggestion:  4-6 second timer when unit is idle and vulnerable to dmg doing nothing while garrisoning.  Alternative suggestion is all armor becomes 0 but unit can attack while garrisoning.

     

    Conversely, ungarrisoning units should not be instant.

    • Like 2
    • Confused 2
  3. 4 hours ago, BreakfastBurrito_007 said:

    @alre I hope I can clarify:

    We are only comparing Han's Will-to-fight with other civs Will-to-fight. Hans is simply superior. I know that everyone would prefer to keep unique aspects of the civ, but the options are adjust/rebalance the upgrades, or revert to standard will-to-fight.

    I think you can keep the uniqueness by just switching the costs around.

    The most valuable damage IG is ranged damage.  Make ranged cost metal+1 other instead of just wood/food.  Change the cost of melee from metal+1other to wood/food.  Keeps uniqueness and makes it more fair, imo.

    • Like 2
  4. 50 minutes ago, BreakfastBurrito_007 said:

    Another suggestion for Han:

    "Will to fight" is separated for Han, with a ranged version of the upgrade and a melee version, each with about half of the regular resource costs.

    Because the vast majority of general damage in the game is done by ranged units, the ranged version of will to fight is better than the melee one, and consequently better than the general "will to fight" that all other civs have.

    Those upgrades need to be either adjusted or merged into the standard "will to fight"

     

     

    27 minutes ago, chrstgtr said:

    Good point. I kind of like the uniqueness of it. But it makes it easier to concentrate your army focus. I would suggest keeping separate, but raising the cost of each. 

     

     

    Proposal:  Change the costs around.

    Make ranged one cost:  Stone/Metal (or Metal/Wood)

    Make melee one cost:  Food/Wood (or Food/Wood/Stone)

    Ranged needs to cost metal.  I'm fine with them being split.  With it costing metal it is about similar to "obtain difficulty" of WTF.

    • Like 2
  5. 1 minute ago, real_tabasco_sauce said:

    @Dizaka I see what you mean but these issues are individual and outside the scope of the upgrades we discussed. Adding the upgrades would in no way stop updates to elephant archers for example.

    ...

    Lastly, I doubt such an overlay is possible or even effective. Instead, we can just add what has been voted for into 0.26.4, and then I can modify the upgrades as necessary to be a part of the community mod in a27. (because I really haven't seen any good reasons not to add them.)

    this way a27 and 0.26.4 get the more popular items here, and the upgrades could possibly go through a longer period of playtesting.

    I'm hoping it is possible.  You can disable/enable allied vision being explored.  I don't see why it'd be impossible to enable/disable technology trees from lobby.

    My main concern is 0ad and community mod becoming too divergent and incompatible.  I genuinely like the changes but they are drastic.  To not change the spirit and intent while increasing the complexity of balancing, I would seriously consider the proposed changes as ones that would need a lot of balancing and input/testing.  I think a checkbox would be best choice and I do not mean to belittle your effort because I like the changes but they are drastic but are what is wanted, civ diversification.

  6.   

    1 hour ago, real_tabasco_sauce said:

    Hi @Dizaka thanks a lot for this feedback. Do you mind if I use the list you made in the unit specific upgrades description in Gitlab?

    Go for it.  That's why I included the files so there is no need to "repeat" the work.

     

    1 hour ago, real_tabasco_sauce said:

    first: I think you meant to say 'P2' and 'P3' not 'P1' and 'P2'.

    Ooops :(

    1 hour ago, real_tabasco_sauce said:

    I think the current cav concerns will remain since we were unable to agree on a nerf for them. I thought the health adjustments were pretty ideal, but it seems players had their concerns with them since many voted no.

    Keep in mind that the existing "cavalry_health" and "cavalry_speed" upgrades would be removed here as @Feldfeldmentioned, so the upgrades would technically buff infantry more than cavalry.

    Sounds good

    1 hour ago, real_tabasco_sauce said:

    What do you mean by "defining the unit roles"? Are you saying the units are too similar for these upgrades to make sense? Are some upgrades too similar? Also what are the red, underlined parts?

    What I mean by that is, for example:

    Macdonians:  They don't have non-champ xbow.  However, the upgrade (Streamlined fletching) for xbow is provided for them.  Currently, that upgrade seems pointless and/or their champions too strong?

    Another Point:  Certain civs feel "empty."  I genuinely feel that each civ should have tank/ranged for both cav and infantry.  There are a few civs don't have both for cav unless you include mercs.  That is, cav usually win games.  If civs don't have cav tank/ranged combos then they are weak civs.  I think this could be changed with more diversity by doing chariots and mounted cav and mixing this up and making elephant cav viable for some civs (sele/Maury).

    Another Point:  Maury elephant archers are sidelined by 2 pop.  Their damage has been halved.  They are not used anymore.

    Another Point:  Ranged siege is weird situation with infantry attacks.  Same with rams.  I don't understand why these units can't be used versus live units.

    Another Point:  Kush axemen.  Are they sword? Are they Spear? Are they Pike?  What is their role?

    Another Point:  Persian Axe Cav.  What are they?  What function should they serve?

    Another Pont:  Han Halber(sp?)?  Are they just reskined pikemen?  An hybrid sword/spear/pike?  Hybrid sword/pike? Hybrid Sword/spear?  Why do han need pike, spear, and hal.  Could it be hal+ just another one, not all 3?

    Another Point:  Heroes without auras?  Sparta comes into mind.  Then Mauryas if temple update is permanent.

    Another Point:  Are merc cav even used/useful?

    I think the changes being proposed are more of an "overlay" that could be perfected/added in the future but the primary effort should be at making current units more usable.  That's why I think, if it does get implemented, it's as a checkbox for multiplayer in the community mod.  That is, I don't want to live through another "archer update" (which WAS necessary) to make units viable.  I'd prefer all units to be viable BEFORE any changes are put on top for uniqueness.

     

    Disclaimer:  I'm of the perspective that 0ad matches, ideally, should be 20-30 minute matches majority of the time.  Anything over 45 minutes is too "hardcore" to attract casual players.  There needs to be an available aggressive early game, aggressive mid game, and aggressive end game.  Phases shouldn't be just "transitions."

  7. 4 hours ago, real_tabasco_sauce said:

    Im frankly just surprised so many would reject such a large addition of content to the game. Almost nobody would vote no on a new civ, even thought they may not understand all the details on the new civ.

    @Dizaka did you follow the link provided? https://gitlab.com/0ad/0ad-community-mod-a26/-/merge_requests/25

    It is a tech tree, a system, found in the barracks/stable for each unit. Each of these 23 is an upgrade for a particular unit type. among them, there is a level 1 (town phase, costing 100 food, wood, metal) and a level 2 (city phase, costing 200 f,w,m). They do not effect mercenaries. Each civ is allotted 4 to 8 of these upgrades for units which are important to their play style, and also depending on balance. (for instance, I didn't give the skirmish cav upgrade to mauryans).

    each upgrade is also designed to give differentiating qualities to units (longer pikes, increased pikemen cavalry counter, spearmen prepare time upgrade).

    The idea is that the upgrades one civ has access to are at least a little different from another, and different advantages/disadvantages come from this.

    I hope you can see that they all work together as a system and that adding a select few of them wouldn't work well.

    A lot of you mentioned you like them, but a few things are remain unappealing. What would you personally change about the upgrades?

    Here's are my concerns and suggestions for #3 after going through everything and summarizing it for myself (note:  this took 2+ hours.  Not a simple vote item).

    Final Conclusion Statement:  It's a great idea and it's something where 0ad should strive for "civ differentiation."  However, the main issues is that base units needs to be balanced and roles more defined.  That is, spear/pike/sword/axe, bow/skrim/sling/xbow, cav vs infantry, need to be more defined.  Currently, cav are OP for endgame even without the proposed upgrades.  As it stands, the upgrades, I think, would make 0ad a cav-centered game.

     

    Suggestion/Middle ground:  A checkbox in community mod to "enable" this over base game.  Alternatively, a new "community mod" type but then this wouldn't get usage.

     

    My analysis is based on the following "data" and extraction of information.

     

     

    ·      Athenians

    o   Horseback training

        • P1
        • .65 Attack/Range/PrepareTime
        • .75 Attack/Ranged/projectile/Spread
      • Husbandry
        • P1
        • 1.1 Health/Max
      • Chamfron
        • P2
        • +1 Resistance/Entity/Damage/Pierce
      • Longer slings
        • P2
        • +5 Attack/Ranged/MaxRange
        • 1.1 Attack/Ranged/PrepareTime
      • Basic Training
        • P1
        • 1.2 Attack/Melee/Damage/Pierce
      • Battle Charge
        • P2
        • 1.5 UnitMotion/Acceleration
        • 1.1 UnitMotion/Walkspeed

    ·      Britons

    o   Husbandry

    o   Chamfron

    o   Longer slings

    o   Basic Training

    o   Battle Charge

    ·      Carthaginians

    o   Heavy draw weight

        • Available P1
        • Maury/Kush/Carth/Hah
        • 1.15 attack/ranged/damage/pierce modification
        • 1.5 projectile speed modification

    o   Horseback training

      • Basic Training
      • Battle Charge

    ·      Gauls

    o   Horseback training

        • P1
        • .65 Attack/Range/PrepareTime
        • .75 Attack/Ranged/projectile/Spread

    o   Husbandry

    o   Balanced Javelins

        • P1
        • +30 Attack/Ranged/Projectile/Speed
        • 0.7 Attack/Ranged/Projectile/Spread

    o   Spear Thrower

    o   March training

        • P1
        • 1.1 UnitMotion/Walkspeed

    ·      Han

    o   Heavy draw weight

    o   Horse Racing

        • P1
        • 1.1 UnitMotion/Walkspeed
        • 1.5 UnitMotion/Acceleration
      • Lancing tactics
        • P2
        • 1.2 Attack/Melee/Damage/Pierce
        • .25 Attack/Melee/PrepareTime
      • Streamlined Fletching
      • Longer Pikes
        • P1
        • Sele/Mace/Ptol/Han
        • +4 Attack/Melee/MaxRange
      • Basic Training
      • Battle Charge

    ·      Iberians

    o   Horse Racing

    o   Lancing tactics

    o   Balanced Javelins

    o   March training

    ·      Kushites

    o   Heavy draw weight

    o   Horseback training

    o   Horse Racing

    o   Greaves

        • P1
        • +1 Resistance/Entity/Damage/Hack

    o   Lightly Armored

        • P2
        • 1.3 UnitMotion/Walkspeed
        • 1.5 UnitMotion/Acceleration
        • -1 Resistance/Entity/Damage/Pierce
      • March training
      • Hand Guards
        • P2
        • 1.1 Health/Max
        • +1 Resistance/Entity/Damage/Hack

    ·      Macedonians

    o   Horse Racing

    o   Lancing tactics

    o   Streamlined Fletching

        • P1
        • 1.5 Attack/Ranged/projectile Speed
        • 0.8 Attack/Ranged/Projectile/Spread
      • Longer Pikes
      • Buttspike (Rome?)
        • P2
        • 1.2 Attack/Melee/Damage/Pierce
        • 1.5 Attack/Melee/Bonus/BonusCavMelee/Multiplier
      • Balanced Javelins
      • Spear Thrower
        • P2
        • Mace/Rome/Gaul
        • +5 Attack/Ranged/MaxRange

    ·      Mauryas

    o   Heavy draw weight

    o   Scouting tactics

        • Available P1
        • Adds 10 to vision & range
      • Cavalry Heavy Draw
        • P2
        • 1.15 attack/ranged/damage/pierce modification
        • 1.5 projectile speed modification
      • Husbandry
      • Chamfron
      • Greaves
      • Lightly Armored

    ·      Persians

    o   Scouting tactics

    o   Cavalry Heavy Draw

    o   Heavy Axe

        • P1
        • 1.65 Attack/Melee/Damage/Hack
        • 1.5 Attack/Melee/Damage/Crush
        • 1.5 Attack/Melee/RepeatTime
      • Raiding Cavalry
        • P2
        • 1.15 Motion/Walk
        • 1.25 Motion/Acceleration
        • 0.75 Resistance/Entity/Damage/Pierce
      • Basic Training

    ·      Ptolemies

    o   Scouting tactics

    o   Horse Racing

    o   Lancing tactics

    o   Longer Pikes

    ·      Romans

    o   Horse Racing

    o   Lancing tactics

    o   Balanced Javelins

    o   Spear Thrower

    o   March training

    o   Hand Guards

    ·      Seleucids

    o   Scouting tactics

    o   Cavalry Heavy Draw

    o   Horse Racing

    o   Longer Pikes

      • Buttspike
      • Balanced Javelins

    ·      Spartans

    o   Horse Racing

    o   Balanced Javelins

    o   Basic Training

    o   March training

     

     

     

    • "Heavy draw weight"
      • Available P1
      • Maury/Kush/Carth/Hah
      • 1.15 attack/rangedd/damage/pierce modfication
      • 1.5 projectile speed modification
    • "Scouting tactics"
      • Available P1
      • Pers/Sele/Ptol/Maur
      • Adds 10 to vision & range
    • "Cavalry Heavy Draw"
      • P2
      • Maur/Sele/Pers
      • 1.15 attack/rangedd/damage/pierce modfication
      • 1.5 projectile speed modification
    • Heavy Axe
      • P1
      • Pers
      • 1.65 Attack/Melee/Damage/Hack
      • 1.5 Attack/Melee/Damage/Crush
      • 1.5 Attack/Melee/RepeatTime
    • Raiding Cavalry
      • P2
      • Pers
      • 1.15 Motion/Walk
      • 1.25 Motion/Acceleration
      • 0.75 Resistance/Entity/Damage/Pierce
    • Horseback training
      • P1
      • Gaul/Athen/Kush/Cart
      • .65 Attack/Range/PrepareTime
      • .75 Attack/Ranged/projectile/Spread
    • Horse Racing
      • P1
      • Rome/Mace/Kush/han/Iber/Ptol/Spart/Sele
      • 1.1 UnitMotion/Walkspeed
      • 1.5 UnitMotion/Acceleration
    • Lancing tactics
      • P2
      • Mace/Han/Rome/Ptol/Iber
      • 1.2 Attack/Melee/Damage/Pierce
      • .25 Attack/Melee/PrepareTime
    • Husbandry
      • P1
      • Athen/Brit/Maur/Gaul
      • 1.1 Health/Max
    • Chamfron
      • P2
      • Athen/Maur/Brit
      • +1 Resistance/Entity/Damage/Pierce
    • Greaves
      • P1
      • Kush/Maur
      • +1 Resistance/Entity/Damage/Hack
    • Lightly Armored
      • P2
      • Kush/Maur
      • 1.3 UnitMotion/Walkspeed
      • 1.5 UnitMotion/Acceleration
      • -1 Resistance/Entity/Damage/Pierce
    • Streamlined Fletching
      • P1
      • Han/Mace
      • 1.5 Attack/Ranged/projectile Speed
      • 0.8 Attack/Ranged/Projectile/Spread
    • Longer Pikes
      • P1
      • Sele/Mace/Ptol/Han
      • +4 Attack/Melee/MaxRange
    • Buttspike
      • P2
      • Mace/Sele
      • 1.2 Attack/Melee/Damage/Pierce
      • 1.5 Attack/Melee/Bonus/BonusCavMelee/Multiplier
    • Balanced Javelins
      • P1
      • Iber/Mace/Spart/Gaul/Sele/Rome
      • +30 Attack/Ranged/Projectile/Speed
      • 0.7 Attack/Ranged/Projectile/Spread
    • Spear Thrower
      • P2
      • Mace/Rome/Gaul
      • +5 Attack/Ranged/MaxRange
    • Lead Shot
      • P1
      • 1.3 Attack/Ranged/Damage/Pierce
      • 1.25 Attack/Ranged/Damage/Crush
      • 1.2 Attack/Ranged/RepeatTime
    • Longer slings
      • P2
      • Athens/Brit
      • +5 Attack/Ranged/MaxRange
      • 1.1 Attack/Ranged/PrepareTime
    • Basic Training
      • P1
      • Athen/Pers/Brit/Spart/Cart/Han
      • 1.2 Attack/Melee/Damage/Pierce
    • Battle Charge
      • P2
      • Athen/Brit/Cart/pers
      • 1.5 UnitMotion/Acceleration
      • 1.1 UnitMotion/Walkspeed
    • March training
      • P1
      • Iber/Rome/Gaul/Kush/Spart
      • 12.1 UnitMotion/Walkspeed
    • Hand Guards
      • P2
      • Rome/Kush
      • 1.1 Health/Max
      • +1 Resistance/Entity/Damage/Hack
      •  

     

    Civ-Balanced.docx Upgrades-Balanced.docx

    • Thanks 1
  8. 44 minutes ago, BreakfastBurrito_007 said:

    I would like more people to have this mindset. 

    People are saying that all the upgrades in the system being bundled together is a bad idea. I suppose the alternative is to have 23 fractions of the system all in series in the poll. If you support this way of voting for the system please state the advantages.

    My understanding:  Votes for a change should be informed votes.  That is, to make changes as appealing and unanimously supported/voted by the community so that there is a greater likelyhood of adoption in a27 (if even possible) it would be best to vote on this when changes are properly elaborated.

    Problem:  Yes, someone can go through code, but not everyone can read code.  Yes, someone can go through comments, but not everyone has the time to read the comments.  Doing the items in series is an alternative to if the item is not described properly in the changes.  I spent 20 minutes reading through all the items and voting on obvious things.  Then I spend 30 minutes reading through the comments to find item 3 changes and to try to piecemeal what the 23 changes are.  I couldn't find enough of a descriptive of all the individual 23 items that were changed/added.  This doesn't necessarily mean that those changes are bad.  But I do not want to jeopardize the integrity of the process.

    I can't make informed votes on changes, that likely, are good when they aren't descriptive if I want a high chance of other changes making it into a27.  My reasoning is that I want to protect the integrity of the whole vote process to make sure that the changes in the community mod are likely to be given a strong weight by stan and the dev team.

    Maybe add a 4th option "better description needed" in the votes?

  9. 16 minutes ago, chrstgtr said:

    Do you mean 3?

     

    Yea, sorry.

     

    13 minutes ago, real_tabasco_sauce said:

    Yeah we did something like that. Unfortunately this means only 5 changes will be actually added, which is a tiny fraction of the work I put in here :(

    Hopefully I don't get any blame for the lack of content.

    I don't think anyone is unappreciative of your work, just an fyi.  There's a lot of stuff that I do for family that is unacknowledged and when it comes to a group vote I usually get outvoted.  Doesn't necessarily mean anything other than a decision was made.

      

    2 minutes ago, real_tabasco_sauce said:

    I would say learning new things is good. If there are more things to learn, that means there is more content to explore.

    Also Said saying he feels like a newbie is a massive exaggeration, he still plays very well XD.

    Also, this isn't a balance mod, its for new features too.

    Again, I think I did a bad job of communicating what the upgrade system involves. Sorry to all the yes voters.

     

    I think if 3 was more itemized into 23 items it would get a lot more support.  Sort of like #1.

     

  10. 3 hours ago, real_tabasco_sauce said:

    I would say with 26 votes we could probably call it. Anyone disagree?

    Looks to me like 1,2,3,4,8, and 10 certainly have enough support, but i'm not sure about 7. Neither cavalry change was supported, we can redesign something for cavalry later as @chrstgtr said.

    #7 (crush rebalance and hack attack for clubs) is one vote ahead for yes and its actually a fairly minimal change, the main thing is increasing macemen's general effectiveness for fighting. Less crush armor also means catapults will 1 hit more units, which I see as a positive.

    Does anyone think 7 shouldn't be added even though there are more yes votes?

    edit: nevermind, I guess the votes keep coming. When should we call it?

    I'mma get bashed for this one:

    For 4 I voted no.  It may be good ideas.  Great ideas too. I'd strongly, however, suggest making that "1 item changed/modified then vote for that 1 item."  Do not bundle items as riders for voting. 

    It's hard to get a large overview of impact on the individual items/riders.  It would be better for a "no bundling/riders" rule on changes to be voted on.  Might sound stupid, but riders could be a problematic (a rider is an additional provision added to a bill or other measure under consideration). 

    • Like 1
  11. Just concerned about the healer changes.  

    If you make healer upgrades/cost of healers too cheap then Mauryas are left with just 1 hero that is useful.  Just something to think about.  Currently, having mauryas as allies is beneficial due to temple upgrade team bonus and hero for cheaper temples and temple upgrades.

    I think if the healer changes are implemented then Mauryas team bonus AND the hero upgrade (chariot hero) may need a change concurrently.

     

    @chrstgtr @BreakfastBurrito_007 @real_tabasco_sauce

     

    • Like 2
  12. I play most computer games without sound.  I'm not deaf, just a preference.  Habit from youth when gaming at night with family sleeping ...

    When setting the game sounds to 0, after some time, the console gets spammed with cannot find ogg files.  When setting sound to at least "1" this does not happens and corrects the error.

    System:  macOS Monterey; Apple M1

    873018614_ScreenShot2022-09-25at1_43_10AM.thumb.png.e5095f4273dedfadab68f0b7b8b9f648.png

     

     

    • Like 1
  13. 12 hours ago, Player of 0AD said:

    I like it to reach 100 population in under 7 minutes. Changing the game would mean less fun.

    I'm curious:  If the game would use less units and be equally as challenging / fun (basically, the same, just less units) would that be ok to use less units vs more?  There's a point, I think, where it would be more fun to do 6v6 and 10v10 games that are low pop rather than a 1v1 with 300 or 4v4 with 200.

    • Like 1
  14. 15 minutes ago, Darkcity said:

    There are two options. Allow capturer to train captured civic units or not allow that. We can look at from multiple perspective.

    • Gameplay persepective
      • Not allow case: In this case gameplay will be as usual nothing impacted. People will know what to expect and what are the benefits of caturig the building.
      • Allow: New gameplay kicks in, people can train any units of any civilization as long as they capture the buildings. Maybe interetsing gameplay, but few limitions are there.
        • User will see so many units types, He will have so many questions.
        • He opts for a civic that has some units. Now he sees so many units from so many buidlings, which one to train?
        • Therotically speaking a game with ffa of 8 players, a player can have 8 different variation of each units like skirmish cav, will he even going to use that?
        • People play a civic becasue they know the civic, sure some variation in units are preferred but with too many options player might get confuse. 
          There can be other cases as well.

    We should test out this in mode if possible.

    • Logical persecptive:
      • A civilization that especialize in certain units types should have suprior units compared to a capturur that doesn't especialize in it. If Romans captures Sele elephant stables and train eles then they should be inferior in stats.
        If we are willing to do that then I think it should be fine logically.
      • Certain units types are specific to a civilization that defines their indentity, should fire cav be trained other than by Iberians? It can be questioned.
    • Product perspective
      • A single player can have so many types of units trainable under him, depends on types  of buildings captured. It will add to some level of more complexity.
      • UI handling will be difficult. Suppose you are brits, you have ptole backs and roman barcks and mauryans barcks captured, and so on. In certain cases, no of differnet units will exceed the supported number on screen. For example on slecting barack we can show 10 differnet types of units. But now we have 20 types of units, the UI will break.
      • The units trained under capturur shouldn;t be able to build captured civilization building. This needs to be disbaled else it will be hugh mess. For example if a roman civic captured mauryans & brits baracks and trained archer and sling. These units should not build those civic specific building. UI will break. To handle this we will need hard checks, another level of complexity.

    ===================================================================================================

    My point is allowing going with option 2 is more complex and less logical than we think. We can make some expercation for certain units and among certain civiclizations, but fully allowing I'm not in favour of.

    We can either go with option 1 or have some exceptions (something in middle) but not option 2.

    I think there are 3/4 options that differentiate make merc and/or champion units transferable for captured buildings.

×
×
  • Create New...