Rock Log is a very powerful and useful tool that uses your web browser to track any of your logs, debugs, and variables that you may find useful.
It also includes cool features such as creating charts of tracked variables and automatically taking screenshots at set points in your script.
An example is that last night I was using it to track the speed of my main character as he moved and then automatically take a screenshot for me when he reached a certain velocity. Very handy for testing!
Being able to use your browser for your logging/debugging is obviously really useful for cross platform testing, so you can be running your test program on an ipad for example and be streaming your errors and logs on your local PC browser.
There are heaps more functions and options however. Rock Log should save you hours of time and pain when creating and developing your Unity programs, so give it a try!!
imtrobin, we do not currently ship the c# source (but obviously we ship all the JS source for the webpage), we do this primarily because in order to support UnityScript (JS) we had to remove all the optional parameters from our c# code, the result of this is 5-20 version of each of our public functions, making for some inelegant code. Also in order to work around some quirks with UnityScript reflections we need to use the internal access modifier on some variables we would have preferred to have kept private, shipping our code as a dll solved this issue for us.
Having said that, we were not entirely happy with shipping a dll instead of source (we like source), but we really couldn’t think of any reason why people would want to modify our source (as its not actually part of the game, more a tool you use while developing), if you can give us a good reason to provide source we are happy to rethink our approach.
THe reason is when Unity changes API (seems to happen now even between minor versions), and you are no longer around (it happens a lot of packages), then I can fix it. Some author zip the the source separately, so it does not interfere with the running.
You make a good point, and distributing the source in a zip would fix most of our issues. I will discuss it with the team and give you an update shortly (either way it wouldn’t make it until the next version of RockLog that is still a few weeks away).
In awesome news Rock Log is now in the 24 hour sale in the asset store for 50% off! So if this is an asset that you think could be very useful for you in developing your game or software now is he time to get a cheap copy and try it out!!
What is a common performance hit for this asset? How does the performance hit scale based on number of logs and/or screenshots? Does the browser carry most of the weight?
After integrating your asset; what is the expected workflow when it comes time for our products to be released? Do we create our own exclusion-wrappers or does your asset self-terminate when Debug.isDebugBuild is FALSE?
The performance hit for the number of logs is a lot lower than the unity console. The screenshots have a small hit on the frame they’re generated on, but once sent to the browser incur no more processing. The watches require the most processing but you can change the frequency of updates if you need to watch a lot of variables at the same time. We commonly watch 20 variables without a noticeable problem.
The asset does self terminate when building a release build, so you don’t have to worry about that.
Including a zip of the source in a future update is very likely as its been highly requested and makes sense.
If you have any additional questions please don’t hesitate to ask.
Okay, turns out the “doesn’t catch anything after” thing is due to incompability with the GameAnalytics package - you both call RegisterLogCallback, I guess.
(Which is a perfect example of why it would’ve been nice to have the source code. I could’ve fixed that in a matter of minutes locally, but I don’t see any general solution that you guys could implement there.)
TobiasW, we will be releasing an update to RockLog in the next week or two that will include full source and will also include a fix so RockLog persists between scenes (amongst other things). I will look into the issue with the GameAnalytics package and will try to get a fix into this release (but can’t commit to that yet), have you tried calling Rock.Log rather then Debug.Log? That should work around the RegisterLogCallback issue.
With your issue with the logs window in the browser, I need a little more info to help, could you put in a bug report here: http://lightningrock.com/rock-log-bug-report then I can email you directly.
Sweet. Looking forward to it! And I did not try to call Rock.Log, but I’m sure it would work. Once I turn GameAnalytics off, Debug.Log works as well. (As long as I only have one monitor though, I won’t be using RockLog while I’m in the editor, so Rock.Log is no option.)
I can’t reproduce my issue with the logs window anymore. If I do, I’ll report it!
If I change scenes, this triggers destroy of RockLog, alternatively if I manually disable the RockLog script while game is running, either of these two situations results in the Unity editor hanging.
Even if I place rocklog gameobject on a child with DontDestroyOnLoad it still hangs when scene changes.
Zaddo67, I’ve been trying to replicate the problems you are having without any luck, is there any chance you could send me a example project to by email ben at lightningrock dot com?
Started to use Rock Log on a project I’m working on, I’m generally very happy with it (Being able to filter log messages is great!) but do have a few suggestions:
It would be nice to be able to configure things so all log messages will actually be mirrored to Unity’s normal console window, or provide an in-editor simplified browser. When doing simple test scenes it can just be more convenient to look in the same window to see the output.
It seems to throw errors when the build is set to Webplayer. I know you’re not going to be able to set up your port in this mode but it’d be nice if the error message was something other than an exception as that scares me when I’m actually going to be building a webplayer version of my project.
The filtering is useful, really useful, but I’d actually like to see a second level of filtering based on another optional string which I could use to identify the source of the log message. This would allow me to see a tank misbehave in an RTS project and so choose to filter on “AI” as I currently can to see all of my AI logs, but then could choose to further filter on “Tank (23)” as the source. I could now view the log for the AI system as a whole, or just view the log for the one unit I’m interested in, or even possibly to view all logs for that unit regardless of whether they’re AI, Rendering, Network or whatever. I know I could join the strings and log for “AI: Tank (23)” but that would stop me being able to view all AI logs at once, or all Tank 23 logs at once, and would also mean I have a silly number of filters as the top level.
Molt, The boys have read your post and rather than replying, they have simply started looking at implementing some stuff you have requested. But to keep you in the loop while they are coding away, I’ll let you know what I overhead from their conversation.
There is an issue pushing logs back to the editor log window, something about circular referencing… but they have a solution.
Web player won’t be supported, as it simply won’t work. But some sort of webplayer detection so it won’t try and run to stop errors is a good idea.
You can have a second level of filtering, depending on how you are pushing your logs.
To keep with your example. If you are adding a AI category to a log, simply put the name of the object into string as well.
So your log might be something like Rock.Log(GameObject.name + "Go to cordinates " + Vector3.tostring, “AI”); (sorry if the syntax is wrong, but I’m an artist, not a programmer).
Then to find all your AI logs on Tank (23), select the AI category, Then in the filter string (up next to the category buttons in the web page) type in the string Tank (23). It will then only show you Tank (23)'s AI logs.
I hope this info tides you over until one of the boys who knows what they are talking about can get back to you.
Molt, just to add a few things to debeani’s answer:
We are looking into getting the logs to appear in both RockLog and the Unity console, this is a bit of a pain because without some handling code you end up in the situation where you call Rock.Log(“message”), that passes the message to the Unity console, which in turn pushes the message back to RockLog. I expect this will be fixed in the May/June release.
As debeani said, webplayer is not supported, basically the webplayer is too cut down from the other environments to run RockLog, we did do some prototypes where we embedded RockLog on the same page as the webplayer, but these were terrible to work with. Also the webplayer is end of life this year so we didn’t want to spend too much time trying to find a work around.
I think debeani explained the filtering pretty well, we are looking at adding more complex filtering in the future, but at the moment debeani’s solution should get you want you are looking for. If not let us know and we will try to find you a solution.
Looking at Rock log as a possible solution for my team. Currently we do have two questions though.
Is it possible to log to a remote website? We want to be able to monitor whats going on during play sessions and this would be fantastic for live data. (Our team is spread across the world)
Is it possible to log to a file or save the current log to a file for later viewing?