Zyxpsilon Posted August 12, 2015 Share Posted August 12, 2015 Where's Civ5 superbly efficient DB & SQL data-caching system ( and LUA versatility for that matter! ) when we need it the most? ;)How many times have i been able to fully control the whole gameplay recordings and mod(s) processing just through some quick SQL edits!! Then... why should we restrict ourselves with the current limitations of the "Save" structural method. It's as if this process is starting to look as an obstacle to optimal journalization rather than a mean to let the Summary operate smoothly enough to be considered worthy of any given run-time features. While it may yet be a solid source of key datasets... assembling an entire campaign with relevant results towards a data cruncher gimmick of our own, **THAT** needs to be pushed on-Screen in a trio of devices; TimeLine, Graphs, Summary. I only should suggest a very simple approach yet maybe difficult to integrate -- we just need a custom (but truly external) DataBase context (along with operations & complex functions) and an easy way to process it aside from the ongoing gameplay mechanics (sic-Saves & player's inputs). Honestly, i have no idea if it's possible... but i can clearly remember what Civ5 can do.Just think it over for a while. Link to comment Share on other sites More sharing options...
tracktwo Posted August 14, 2015 Author Share Posted August 14, 2015 Attaching any sort of external interface is going to be pretty tricky -- with no native interface UScript is pretty well sandboxed. However, now that I have custom classes saving and loading correctly, I have some new ideas for how to mitigate this. The basic plan is process the raw journal data into a more useful data structure for the timeline (and ultimately the other views as well). The term journal is pretty apt, it's sort of like a filesystem journal. The mod will record the last journal entry seen, and as new entries are added it will process them and add them to the customized data structures so they can be processed quickly by the UI. When the mod is first installed and a long-running campaign is loaded, there will obviously be quite a backlog of journal entries to process. But, there isn't any reason why the processing has to start only when the user first enters the campaign summary screen. In fact, an unreal actor object can be quietly sitting in the background gobbling up new entries continually until it catches up to the end of the journal. Unless the user loads up the campaign and immediately goes to the situation room, the background actor can probably catch up and be ready to go after a minute or so of tooling around the base doing other things. And once it's caught up the first time, new entries occur only sporadically and will be consumed basically instantly. If the user does happen to enter the summary UI quickly, I can detect that the journal is still unprocessed and pop up a "please wait" dialog/progress bar and ramp up the background processing so it happens quicker than normal. So my next task is starting to get this data structure organized enough to allow the panic bars to be accurately reflected as the timeline proceeds. Then I'll gradually extend the support to other aspects, e.g. satellite coverage, interceptor status, and mission icons on the map. I don't think much more than this will be needed for the basic timeline view, but to tackle graphs and the summary I'll need to add things like resource totals. Link to comment Share on other sites More sharing options...
Zyxpsilon Posted August 14, 2015 Share Posted August 14, 2015 Fair enough!Once the basic "Data cruncher" devices and assets are in place... it will most probably become trivial to supply comprehensive features while connecting everything in a cohesive structure that should match with the current HUD state & what it natively allows in some easy ways! I feel the data tracking "records" will need to be expanded a little though. It's really a decision we should take early in development -- WHAT is it we want (or must) to include? As exactly as possible. And if so, HOW complex or limited any such details can get & as a result, should have priority over other concerns? Technically, we're heading right on target, AFAIC. Link to comment Share on other sites More sharing options...
tracktwo Posted August 16, 2015 Author Share Posted August 16, 2015 Latest status: - I wrote the first version of the JournalProcessor class that eats the journal entries and records them in a form that's easier to use. This spawns when the strategy game loads and runs in the background on a timer, consuming journal entries until there are none left. - Currently the only thing it "processes" is it parses the date associated with each journal entry and builds a "day" data structure that records the raw strings for all events of that day so they can be displayed in the text box. It also recognizes panic change events and records the panic level for each country. So, I now have a data structure that records accurate panic level for each country at any date in the campaign. - Updated the Timeline UI to read the day data structures to dump the raw entries to the text box and also to update the country info boxes to show the appropriate panic levels for the day as you step through with the forward and back buttons. This works well and is kind of cool to watch the bars go up and down over time, especially when there is a big jump. All of a sudden Australia went red and the other Asian countries took big jumps. I don't have mission info showing yet in a reasonable way, but that was pretty obviously a terror mission in Australia - and one I didn't rescue many civvies on :) - Next up: More country info state - accurately reflect the satellite state of each country, whether or not they have withdrawn. Also update the world map for these events (green or red overlays) and update the doom tracker. - After that I plan to move on to getting missions showing nicely on the map. Link to comment Share on other sites More sharing options...
Zyxpsilon Posted August 16, 2015 Share Posted August 16, 2015 (edited) So far -- So good. :smile: How wide will the whole Text-Box be? (PS; the Exalt bottom popup could offer us a neat but thin yellow header-box, btw.) Cuz, i'm thinking a "Spreadsheet" style display would be alright for that stuff. Each row would need to contain some key values (dates & locations & mission types), icons (tiny colored circles, etc), hints and so on in a special framework of aligned columns. Spiffing up the raw data, so to speak. Edited August 16, 2015 by Zyxpsilon Link to comment Share on other sites More sharing options...
tracktwo Posted August 16, 2015 Author Share Posted August 16, 2015 The header box already exists, using the objectives/continent info box. This one is blue and slightly taller than the covert ops yellow one, so there is more space. As XMarksTheSpot noted above, most entries are not very long, so the box can be narrowed to about half the screen to make room for something else (not sure what yet) or I can switch to a two-column view and use the entire width. I'm leaning toward the latter because days can often have lots of stuff associated with them and this would require a lot of vertical scrolling if only half width is used. I am only using the raw journal text as a placeholder for now, I plan to replace it with custom text for each event as I handle them. The main reason being most of the raw journal entries aren't localized but some pieces of them are. So by completely replacing the text I can better localize the mod, assuming anyone wants to volunteer for translations. Link to comment Share on other sites More sharing options...
tracktwo Posted August 20, 2015 Author Share Posted August 20, 2015 I think I'm due for a status update. Here's a screenshot of the current state of the timeline: http://i.imgur.com/UTxfp6Q.jpg A few notes about it:The log is actually two-column, but the default one from Firaxis fills the left column before spilling to the right, so when there are a few items but not enough to split to the 2nd column things look weird. I'm looking into changing this to alternate between columns as entries are added so it's more balanced.The panic bars, withdrawn countries, and satellite coverage are "live" and updated as the day is switched.The slider and buttons aren't quite centered since I switched back to the 'square' view instead of angled edges on the slider. Will clean that up later.I'm using the UFO icon as a placeholder for the mission locations for now, for all mission types.Many (over a dozen) event types are recognized and recorded by the Journal system. Most don't do anything except display a string on the screen for the timeline, but will do more when I get into the graph/summary view data aggregation. The only special ones for the timeline right now are missions, satellite launches, satellites shot down, countries withdrawing, and panic changes. These update the world map and country boxes appropriately.Playback now works as expected, with a default refresh rate of 1 day per second. Not every day has entries, only days where things happen are considered. On playback the play button switches to a pause button, and dragging the slider seeks through the campaign. I still have a few additional items on my todo list, but I hope to be able to get out a first version of the timeline view within a week, time to work on this permitting. There are som things I noticed and need to fix in the actual raw journal entry records. I want to patch all of these before the fist release so new campaigns work better. Most of these are relatively harmless for the timeline view but will be an issue for the graph/summary views because real data are lost. Council mission rewards are bugged due to a localization issue (noted before) - I can't tell if a council reward gave you engineers or scientists, for example. Cash is usually easy to identify because the values are large. Record the resource as an enum value to avoid the localization issue.The starting country is not recorded but can be inferred by the position of the first satellite.No entry is generated when a satellite is shot down. I currently have a heuristic that looks for panic increases of the same amount as a shot down satellite, but this might be unreliable for people using modded INI files to adjust the panic value. Add a new specific entry for this.Entries are generated whenever an exalt cell is placed, but it doesn't record where. Add that.Entries are generated whenever a soldier trains a psi ability, but it doesn't record which ability. Add that.Entries are generated whenever an interceptor is purchased, but it doesn't record which continent. Add that.No entry is generated for interceptors shot down. Add that.No entry is generated for interceptors that are transferred. Add that. (These 3 entries would let me put interceptor icons on the timeline as they appear in the sit room).No entry is generated for UFOs that are shot down. Add that.No entry is generated for missions that expire. Add that. But, things are moving smoothly now, all the R&D work is done for the timeline and it's just actually doing the rest of the coding. Link to comment Share on other sites More sharing options...
Zyxpsilon Posted August 20, 2015 Share Posted August 20, 2015 (edited) Extraordinary results, buddy! :wink: You'll ear no complaints from me about anything you've done so far. In fact... the whole design is getting very solid when the intended features are coming together at last.I really envy you with that privilege of experiencing the cool device in actual gameplay conditions.Synchronizing the duo of "National" panels with events must be wild to watch. Curious... why is Brazil greyed-out? http://s18.postimg.org/sw1wgiklx/HUD_UFOsm_0x97145_C88.png-- Speaking of temporary placeholder for the current timeline stuff... that is what i use as the big UFO "moving effect" in ReCLR!It's slightly smaller and is much less intrusive to the WorldMap. :smile:That is to say... there are a number of other gimmicky symbols already available that maybe could fit the (pre-release) task, IMO; Icon_CRIT_HTML --- Laser_Charge --- Bonus_Height --- ResponseTime --- Etc!! Would it be feasible to keep track of all & any journal records by giving them proper ID-Tags ( while dropping these --pre-colored by types-- references on the left margin of each entry lines ) in a similar way as the UFO counts are being displayed by default #'s in Vanilla?? I'm also happy to realize you're very near (( within a week or two only! )) to a formal Beta stage release. People will be quite pleased by such stuff as it is... and it will all get fffaaarrr more complex... soon enough! :D This is all just soooooo great to witness!! PS; Don't forget to also please fix the Options "drop down button list" of the Situation-Room so that they won't overlay the UK+ Panel itself by pushing them all to the left by the whole width of the top button! :smile: Edited August 20, 2015 by Zyxpsilon Link to comment Share on other sites More sharing options...
tracktwo Posted August 22, 2015 Author Share Posted August 22, 2015 I'll take a look at some other available icons to see what makes sense to borrow. Unfortunately the hologlobe mission icons for things like abductions, crashes, landings, etc are 3d meshes and so aren't very useful for this. I'm not sure I follow about the ID tags. Do you mean put an id number before every item in the list? Not sure what value that'd give because the numbers would be entirely arbitrary and wouldn't really cross-reference with anything. And also, not sure what you mean about the button list? I already hide the entire menu when in timeline view so it doesn't interfere with the country boxes or map. I still need to hide the credits and income box though. Good catch with Brazil! It was greyed out due to a bug. The game stores panic values internally as a number from 0-99 but in the UI it wants a value from 1-100. The journal records the internal 0-99 value so when a country dropped to minimum panic it'd update the UI with a 0 value instead of a 1 value as it was expecting. Now it doesn't grey out, and prints the 1-100 scaled values everywhere. Link to comment Share on other sites More sharing options...
Zyxpsilon Posted August 22, 2015 Share Posted August 22, 2015 (edited) The ID-tags suggestion isn't really a priority... i figured they'd possibly become useful once campaigns reach a point where many hundreds of events & various entries *DO* pile up in some nearly obfuscated context(s). Players would probably want to refer to any such specific spots on their timelines... and having some sort of quick ways to identify whatever they need could certainly be a QoL feature. Arbitrary or not, btw. :wink: Nope... i didn't mean when the new Timeline is in view -- more like when the main usual Vanilla Situation-Room is still active. Not sure if the graphs & summary areas would need to be presented in a similar screen (but will surely -- with highly different Flash elements) as the timeline though.--------------------------------EDIT... This is what i meant by the panel being hidden; http://s2.postimg.org/cbtpssleh/Menu_Options_Hiding_UK.png RED line is the current Drop-Down stack position which is "attached" to the tiny magenta dot.GREEN would push it away just enough.YELLOW brings it straight at the Situation-Room button edge.-------------------------------- Credits & Income "boxes"... gee, might as well try putting that space to good use, no? Since we still are at the country levels -- i could think of a few nifty assets that would fit in these locations. What precisely, i just dunno yet. Judging from the real ingame mod might help us out discovering hints and/or solutions. Panic levels (as shown numerically) is something i already integrated from some geeky XMTS trick. Edited August 22, 2015 by Zyxpsilon Link to comment Share on other sites More sharing options...
Recommended Posts