Jump to content

MattDoerksen

Community Members
  • Posts

    21
  • Joined

  • Last visited

MattDoerksen's Achievements

Discens

Discens (2/14)

0

Reputation

  1. Basically the game stopped on that line (ENSURE(SUCCEEDED(ret)) since it couldn't find the directory. I guess we could look at: 1) Printing a debug message and a message to the user (ask if they have any weird shortcuts or if they've moved their My Documents, etc.). 2) Redirecting the folder to something "standard" (C: emp0AD) or temporary so that they know about the problem.
  2. I recreated my profile and the problem went away, so this should be something to note in troubleshooting this sort of issue in the future.
  3. The weirdest thing I have in my setup is relocated My Documents to my other (internal) drive, but that's just changing the reference in libraries, I don't actually move anything that already exists. And that wasn't a problem with my old setup either, it just stopped working with update r11389. I'm going to try blowing away my profile. Maybe re-creating it will reset whatever weird behavior is happening.
  4. My mistake, I should have explained it better earlier, it does fail on the ENSURE(SUCCEEDED(ret)) line. Ret is now 'device is not ready' which changed recently, before it was something like path not found. It's weird that this happened since it just stopped working one day while I was still running Windows 7 (no changes were made over that period, after syncing it broke).
  5. Ah, I read a little into that but didn't think much of it. I guess I can look at whipping something up for Win 7+.
  6. I was on a very late Alpha 9 build (not sure exactly when the last time I synced up when it worked, probably close to 4 weeks ago, Windows 7). I used to have Windows 7 but I'd been looking for a chance to refresh everything so I migrated to Win 8. I'll see if I can go back before r11389 and check if it works. If so, I can look at debugging this issue and why Win 8 doesn't like CSIDL_PERSONAL (or at least my configuration).
  7. Currently running Windows 8 on this machine but this error just appeared one day while it was running Windows 7.
  8. It dies out on this line in wutil.cpp, personalPath = GetFolderPath(CSIDL_PERSONAL); since it can't find the path. I'll see if I can find out why.
  9. About 2 weeks ago I started getting an error whenever I try to run the program. Since I thought it might have something to do with the problems I was working on I reverted everything (it didn't help). I've even tried re-syncing completely which also didn't help. A couple of other things to note: 1) If I hit suppress, then I get the two attached errors. 2) This only happens in Debug mode (the two errors), if I switch to release mode they don't appear (but the one below still does) and the game hangs if I try to do anything at the main menu. Any tips/advice on how to fix this so I can get back to coding? Function call failed: return value was -1 (Function failed (no details available)) Location: file_system.cpp:157 (CreateDirectories) Call stack: CreateDirectories (file_system.cpp:157) path = 0x0069EA3C -> path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 47 ('/'), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized) } mode = 448 (0x000001C0) s = st_dev = (uninitialized) st_ino = (uninitialized) st_mode = (uninitialized) st_nlink = (uninitialized) st_uid = (uninitialized) st_gid = (uninitialized) st_rdev = (uninitialized) st_size = (uninitialized) st_atime = (uninitialized) st_mtime = (uninitialized) st_ctime = (uninitialized) CreateDirectories (file_system.cpp:151) status_ = (uninitialized) path = 0x0069EB18 -> path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 92 ('\'), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized) } mode = 448 (0x000001C0) s = st_dev = (uninitialized) st_ino = (uninitialized) st_mode = (uninitialized) st_nlink = (uninitialized) st_uid = (uninitialized) st_gid = (uninitialized) st_rdev = (uninitialized) st_size = (uninitialized) st_atime = (uninitialized) st_mtime = (uninitialized) st_ctime = (uninitialized) CreateDirectories (file_system.cpp:151) status_ = (uninitialized) path = 0x0069EBF4 -> path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 92 ('\'), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized) } mode = 448 (0x000001C0) s = st_dev = (uninitialized) st_ino = (uninitialized) st_mode = (uninitialized) st_nlink = (uninitialized) st_uid = (uninitialized) st_gid = (uninitialized) st_rdev = (uninitialized) st_size = (uninitialized) st_atime = (uninitialized) st_mtime = (uninitialized) st_ctime = (uninitialized) CreateDirectories (file_system.cpp:151) status_ = (uninitialized) path = 0x0069ECFC -> path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 92 ('\'), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized), (uninitialized) } mode = 448 (0x000001C0) s = st_dev = (uninitialized) st_ino = (uninitialized) st_mode = (uninitialized) st_nlink = (uninitialized) st_uid = (uninitialized) st_gid = (uninitialized) st_rdev = (uninitialized) st_size = (uninitialized) st_atime = (uninitialized) st_mtime = (uninitialized) st_ctime = (uninitialized) CreateDirectories (file_system.cpp:149) path = 0x0069F24C -> path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 92 ('\'), (uninitialized), 39448, 172, 39696, 172, (uninitialized), (uninitialized) } mode = 448 (0x000001C0) s = st_dev = (uninitialized) st_ino = (uninitialized) st_mode = (uninitialized) st_nlink = (uninitialized) st_uid = (uninitialized) st_gid = (uninitialized) st_rdev = (uninitialized) st_size = (uninitialized) st_atime = (uninitialized) st_mtime = (uninitialized) st_ctime = (uninitialized) VFS::Mount (vfs.cpp:69) status_ = (uninitialized) this = 0x00AC8FF0 -> (IVFS) m_cacheSize = 209715200 (0x0C800000) m_fileCache = impl = px = 0x00ACC7F0 -> m_cache = entries_awaiting_eviction = (unsupported list<CacheEntry<boost::shared_ptr<unsigned char>,Divider_Naive> >) mgr = map = table_ = buckets_ = 0x00000000 bucket_count_ = 11 (0x0000000B) allocators_ = (unsupported ) (unsupported ) current_ = false funcs_ = [2] { { data_ = { buf = [1] { [8] { 205, 205, 205, 0, 0, 0, 0, 0 } }, align_ = t0 = 205 t1 = 205 t2 = 205 t3 = 205 t4 = 205 t5 = 205 t6 = 205 t7 = 205 t8 = 205 t9 = 205 t10 = 205 t11 = 205 t12 = 205 t13 = 205 t14 = 205 t15 = 205 t16 = 205 t17 = 205 t18 = 205 t19 = 205 t20 = 205 (too much output; skipping to next top-level symbol) } }, { data_ = { buf = [1] { [8] { 205, 205, 0, 0, 0, 0, 0, 0 } }, align_ = t0 = 205 t1 = 205 t2 = 205 t3 = 205 t4 = 205 t5 = 205 t6 = 205 t7 = 205 t8 = 205 t9 = 205 t10 = 205 t11 = 205 t12 = 205 t13 = 205 t14 = 205 t15 = 205 t16 = 205 t17 = 205 t18 = 205 t19 = 205 t20 = 205 t21 = 205 t22 = 205 t23 = 205 } } } size_ = 0 (0x00000000) mlf_ = 1.000000 (0x3F800000) cached_begin_bucket_ = 0x00000000 max_load_ = 0 (0x00000000) mcd_calc = min_credit_density = 340282346638528860000000000000000000000.000000 (0x7F7FFFFF) min_valid = false is_min_entry = (bool)0xCD m_allocator = px = 0x00ACC8D0 -> m_allocator = impl = px = 0x00ACC928 -> m_pool = da = base = 0x10200000 -> (unavailable - internal error) max_size_pa = 209715200 (0x0C800000) cur_size = 0 (0x00000000) cur_size_pa = 0 (0x00000000) pos = 0 (0x00000000) el_size = 0 (0x00000000) freelist = 0x019D3FA8 m_segregatedRangeLists = m_rangeLists = [32] m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC948 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC948 (see above) next = 0x00ACC948 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACC948 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC968 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC968 (see above) next = 0x00ACC968 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACC968 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC988 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC988 (see above) next = 0x00ACC988 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACC988 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC9A8 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC9A8 (see above) next = 0x00ACC9A8 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACC9A8 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC9C8 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC9C8 (see above) next = 0x00ACC9C8 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACC9C8 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC9E8 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACC9E8 (see above) next = 0x00ACC9E8 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACC9E8 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACCA08 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACCA08 (see above) next = 0x00ACCA08 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACCA08 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_sentinel = m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACCA28 -> m_magic = -3617008641903833651 (0xCDCDCDCDCDCDCDCD) prev = 0x00ACCA28 (see above) next = 0x00ACCA28 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) next = 0x00ACCA28 (see above) m_size = 3452816845 (0xCDCDCDCD) m_id = 3452816845 (0xCDCDCDCD) m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) ... m_bitmap = 0 (0x00000000) m_boundaryTagManager = m_freeBlocks = 0 (0x00000000) m_freeBytes = 0 (0x00000000) m_stats = m_totalAllocatedBlocks = 0 (0x0000000000000000) m_totalAllocatedBytes = 0 (0x0000000000000000) m_totalDeallocatedBlocks = 0 (0x0000000000000000) m_totalDeallocatedBytes = 0 (0x0000000000000000) m_currentExtantBlocks = 0 (0x0000000000000000) m_currentExtantBytes = 0 (0x0000000000000000) m_currentFreeBlocks = 0 (0x0000000000000000) m_currentFreeBytes = 0 (0x0000000000000000) pn = pi_ = 0x00ACCDD8 -> use_count_ = 1 (0x00000001) weak_count_ = 1 (0x00000001) m_checker = allocs = (unsupported map<void *,size_t >) pn = pi_ = 0x00ACCE80 -> use_count_ = 1 (0x00000001) weak_count_ = 1 (0x00000001) pn = pi_ = 0x00ACCED0 -> use_count_ = 1 (0x00000001) weak_count_ = 1 (0x00000001) m_trace = px = 0x00ACCF20 -> (ITrace) pn = pi_ = 0x00ACCF60 -> use_count_ = 1 (0x00000001) weak_count_ = 1 (0x00000001) m_rootDirectory = m_files = (unsupported map<Path,VfsFile >) m_subdirectories = (unsupported map<Path,VfsDirectory >) m_realDirectory = px = 0x00000000 pn = pi_ = 0x00000000 m_shouldPopulate = 0 (0x00000000) mountPoint = 0x0069F228 -> path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 47 ('/'), (uninitialized), 39592, 172, 39824, 172, (uninitialized), (uninitialized) } path = 0x0069F24C (see above) flags = 0 (0x00000000) priority = 0 (0x00000000) directory = 0xCCCCCCCC s = (ScopedLock) realDirectory = px = 0xCCCCCCCC pn = pi_ = 0xCCCCCCCC InitVfs (gamesetup.cpp:456) args = 0x0069FA70 -> m_Args = (unsupported vector<pair<CStr8,CStr8> >) m_Arg0 = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = [8] { 92 ('\'), (uninitialized), (uninitialized), (uninitialized), 53750, 45957, 64352, 105 ('i') } hooks = override_gl_upload_caps = 0x00000000 get_log_dir = 0x010EE2B0 -> (psLogDir) bundle_logs = 0x010EDF50 -> (psBundleLogs) translate = 0x00000000 translate_free = 0x00000000 log = 0x00000000 display_error = 0x010967A0 -> (psDisplayError) readonlyConfig = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = (uninitialized) mods = (unsupported vector<CStr8 >) logs = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') modLoosePath = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = (uninitialized) modArchivePath = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = (uninitialized) paths = m_root = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') m_rdata = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') m_gameData = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') m_userData = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') m_config = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') m_cache = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') m_logs = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') LINE_437_ = m_t0 = 0.0524032 (0x3FAAD496DEF594E0) m_description = 0x017E6D80 -> "InitVfs" cacheSize = 209715200 (0x0C800000) Init (gamesetup.cpp:834) args = 0x0069FA70 (see above) __formal = 0 (0x00000000) profilerHTTPEnable = (uninitialized) hooks = override_gl_upload_caps = 0xCCCCCCCC get_log_dir = 0xCCCCCCCC bundle_logs = 0xCCCCCCCC translate = 0xCCCCCCCC translate_free = 0xCCCCCCCC log = 0xCCCCCCCC display_error = 0xCCCCCCCC RunGameOrAtlas (main.cpp:525) argc = 1 (0x00000001) argv = 0x00AC8468 -> 0x00AC84A8 -> "E:\0 AD\build\workspaces\vc2010\..\..\..\binaries\system\pyrogenesis_dbg.exe" ran_atlas = false args = m_Args = (unsupported vector<pair<CStr8,CStr8> >) m_Arg0 = path = (unsupported basic_string<wchar_t,char_traits<wchar_t> >) separator = 92 ('\') res = 6.26566e-010 (0x3E058756238EFC37) main (main.cpp:572) argc = 1 (0x00000001) argv = 0x00AC8468 (see above) wmain (wseh.cpp:380) i = 1 (0x00000001) argc = 1 (0x00000001) argv = 0x00AC4E48 -> 0x00AC4E50 -> "E:\0 AD\build\workspaces\vc2010\..\..\..\binaries\system\pyrogenesis_dbg.exe" utf8_argv = (unsupported vector<char * >) ret = (uninitialized) wmainCRTStartup (crtexe.c:371) CallStartupWithinTryBlock (wseh.cpp:396) ret = (uninitialized) wseh_EntryPoint (wseh.cpp:424) LdrInitializeThunk (:0) LdrInitializeThunk (:0) errno = 17 (?) OS error = 183 (Cannot create a file when that file already exists.)
  10. Where is the code for pathfinding? Although it's not directly applicable, I'm working on parallel computing for my M.Sc. (using OpenCL on GPUs and APUs) which could help with potential speed problems (particularly if the user has a very fast PC where they could choose how good to make the pathfinding AI among other parameters [or we could build some tests and see how long they take to execute and choose the most appropriate one]).
  11. Ticket updated. http://trac.wildfiregames.com/ticket/1054#comment:1
  12. Thanks. It was actually just the Command.js file that I needed. Ticket updated http://trac.wildfiregames.com/ticket/643#comment:11
  13. 1. That should take care of the multiple units that can gather. 2. Done aside from trade carts, but that can be added in later if needed (I wouldn't consider them a standard worker). 3. I repurposed part of isIdleUnit to make something specific for idle workers, which now handles garrisoned units. To clarify, what I'm doing is, each time we update the player display, gathering a list of all units the player owns. Then, go through that list and check to see if it's a worker and if so, check which type of resource it is gathering and add it to the count (starting from scratch every time the screen updates, not modifying a continuous count). Now everything works except for situations where the units are told to go do something else (but don't become idle). Where are these commands sent to each entity (say I want him to switch from gathering to building, where is the unit told this, which file?). Once I know where that is, I can mark the unit as not gathering which should handle all of the other cases. Is this in the Command.js file I mentioned earlier?
  14. That was helpful. Looking to things like efficiency and edge cases I'm not sure about a few things, commented in the code. First, I put together this code which gets all of a player's units, cycles through them and finds the workers. If the worker is actively gathering (set in ResourceGatherer.PerformGather(target)), add them to the count, if not, remove them. var rangeMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); var playerEntities = rangeMan.GetEntitiesByPlayer(player); #1 // cycle through all entities // TODO: filter to just workers for each (var ent in playerEntities) { var cmpResourceGatherer = Engine.QueryInterface(ent, IID_ResourceGatherer); if ( cmpResourceGatherer != null ) { // if not idle, check to see what we're gathering // TODO: doesn't count garrisoning as idle (any other situations?) #3 // TODO: what about "Trade", "FishingBoat", "CitizenSoldier", "Healer"? #2 if ( !isIdleUnit(ent, "Female") ) { Now for the clarification and optimization. 1) Is there any better way to get all of a player's units of a certain type? There was no other function such as GetWorkerEntitiesByPlayer which could immediately filter the list. And I'm somewhat worried since this is being called every time we update the player display (which could get ugly if there are lots [100+] units at the end of a game). 2) How do we want to handle the other types of units? Should trade carts be handled based on what type of resource they're moving? (I haven't looked into the trade carts and their functionality, I'm just guessing they can trade any type of resource). As for fishing boats, should they be counted as food gatherers too? Third, are citizensoldiers basically workers but their food cost is converted to metal (or something like that?)? And finally, for the healer, I assume they're not allowed to carry resources, correct? 3) My current implementation handles the unit becoming idle and being removed correctly from the count. It doesn't work though when units become garrisoned (are there any other situations that can cause a worker to not gather [besides death]? Where would these functions be? I see a Command.js file, is this the right one?).
  15. Looking to tackle this one since it seems fairly easy once I know if functionality exists for the player and the file locations. In any of the economy.js files we have the following function which allows the AI to query the number of workers gathering each resource so it can allocate more as necessary. // Pick the resource which most needs another worker EconomyManager.prototype.pickMostNeededResources = function(gameState) { var self = this; // Find what resource type we're most in need of ... var numGatherers = {}; for ( var type in this.gatherWeights){ numGatherers[type] = gameState.updatingCollection("workers-gathering-" + type, Filters.byMetadata("gather-type", type), gameState.getOwnEntitiesByRole("worker")).length; } ... }; The part I'm interested in is: var numGatherers = {}; for ( var type in this.gatherWeights){ numGatherers[type] = gameState.updatingCollection("workers-gathering-" + type, Filters.byMetadata("gather-type", type), gameState.getOwnEntitiesByRole("worker")).length; } I dug around a bit but I couldn't seem to find anything related to this for us, the human player. Does anyone know where something like this would be found, or where I would need to go to add in this functionality so it can be queried in session.js and output to the display?
×
×
  • Create New...