Audio Pre-caching on Map Load

This hasn't been mentioned before AFAIK...

I've noticed that some audio effects which should be pre-cached when the map loads are not. These sound-effects include the following:

1) Monster Death
2) On-hit
3) Attack Skill

This causes the client to stutter badly while fighting the first couple mob packs after the map loads... resulting in some deaths for me.

On my system, PoE is installed on two SSD drives in RAID 0. So, I could only imagine the stutter being worse for those still using mechanical drives.

Of course, it could be stutter caused by loading something else (the animations themselves)... not audio. But, audio files loading on-the-fly (and thereafter cached by the OS) would seem to be the likely culprit to me... that would be the first place I'd look, anyways.

It could be an audio thread issue, but pre-caching would seem like the easier fix to me, since all the audio files needed are known when the level loads.

UPDATE1:

I had a clever idea, and wanted to try it out:

I downloaded and installed gvim 7.3 64-bit, and used the gvim editor (in read-only mode) to load the entirety of Content.ggpk into memory.

Closed it, then started the game as per usual... knowing that the OS has the entire thing cached... tested, and it did solve the problem. For fun I could write a program to do it faster/better than gvim, but this isn't a real solution ;).

UPDATE2:

For the LOLs I wrote this simple visual basic script, which pre-caches the game's resources (provided that you have enough memory to do so, so a 64-bit OS is required). On my system it takes about 10.25 seconds to complete (Raided SSDs ftw)... Considering the filesize, this comes out to be the benchmarked sequential read speed of my drives... so, there's nothing to gain by doing this in a real programming language.

VB runtime should already be installed for everyone running Windows, so there's nothing to download.

filename: whatever.vbs

<snippet start>

dim inStream, atimer, elapsed
set inStream=WScript.CreateObject("ADODB.Stream")
inStream.Open
inStream.type=1
atimer = Timer
inStream.LoadFromFile "Content.ggpk"
elapsed = Timer - atimer
inStream.Close
MsgBox("Done pre-caching EVERYTHING! This Took: " & elapsed & " seconds.")

<snippet end>

Copy contents between the <snippet> remarks, and paste into a .vbs file in your game's folder which contains the Content.ggpk file. Save. Double-click to run, and wait 'till it's done.

I had some fun... never did much in vbscript before... and I'm a little drunk. ;)

UPDATE3:

I've since decided to automate the above for myself by using a batch file. Here's the contents of the batch file (whatever_2.bat):

@echo off
echo "Pre-caching... please wait..."
.\whatever.vbs
start .\Client.exe

A shortcut to this batch file has now replaced the default PoE shortcut on my desktop. Ok, I'm done now. :D
Last edited by Daemonjax#0396 on Aug 16, 2012, 6:19:25 PM
Omg dude I could never thank you enough for replacing my frustration with serenity :)

I was going crazy looking for a fix because I was getting tons of lags and even disconnections issues when I had to fight against large packs of mobs.

Here are my system specs :

I5 3570k O/C to 4.5 Ghz
8GB DDR3 PC19200 (2400 Mhz) Gskill Ripjaws
Nvidia GTX660 Ti 2GB
SSD Corsair Neutron GTX
And of course 64bits version of Windows 7

All of this with an 100MB optical fiber connection, so you could understand why I was getting so frustrated with these issues, but your script worked like a charm, so THX THX THX !!! \o/

PS : since lots of people are getting these issues, why isn't your post in the sticky threads ?
Last edited by SkroOt#0965 on Jan 30, 2014, 7:15:41 AM
"
SkroOt wrote:
PS : since lots of people are getting these issues, why isn't your post in the sticky threads ?


Because most people don't have enough memory to support this, and I think the advised method is actually a RAMDisk (as this is a VERY old post you necroed). Also, the post isn't 100% accurate anymore because of its age.

Client.exe was replaced at the end of Beta with a PathOfExile.exe instead (not that it makes a huge difference). I'm also not sure if just stuffing files into memory randomly would still speed up the load-times, etc. Based on the script, it just takes the whole content file and puts it into a random place in memory. Not linked. PoE needs/expects the file and its contents to be decompressed into certain places in memory for access purposes.

RAMDisk is still the recommended path if you have the memory to support it. Then PoE can be completely loaded from RAMDisk and you don't have to worry about how it is decompressing anything because it's all in the right place. From a technical perspective, I just don't really know how PoE would be able to access the Memory version of the Content file since there is no link between the two (and it also should get dumped from memory once the .Close() method is called)
Hmmm... it seems you're right, I guess pre-caching wasn't the culprit, I don't know why but yesterday just after using his script everything worked fine (I played all the afternoon) but today lags and connections issues came back, so it was only a coincidence... sigh. So I'm going to see with WinMTR and PingPlotter to check if problems come from my ISP. Thanks for your answer and your explanations :)

Report Forum Post

Report Account:

Report Type

Additional Info