Yeah definitely store positions externally rather than in code. I recommend Arrays as they can be loaded directly into RAM and accessed from there, rather than having to be read line-by-line off a hard drive like an INI.
Posts by dsilvers
Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.
A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.
Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!
Clickteam.
A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.
Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!
Clickteam.
-
-
Outcast You actually can do that pretty easily by having an alterable value on the button, plus a string. Call the value "itemPrice" and the string "itemName." Then you can load these in from a database, like an INI or an array, and distribute appropriately. Then you set the text on the button to read itemName+" - "+Str$("itemPrice"(button)). This will dynamically change the text on the button to the string + value combination.
-
I've been looking for an alternative to the screen capture object so I'm excited to check this out!!! defisym by any chance have you gotten to test your extension on Steam Deck? SCO just comes out with all-black images every time.
LazyDev One thing figured out about SCO is that I had to capture areas as a ratio of the current screen width/height (need the Window Size object to get this) to get it to work at every resolution, otherwise the pictures would crop at very specific X/Y coordinates on the screen, rather than within the intended area. This might be related to the issues you're having. Try setting alterable values on an object to store the Width and Height ratios (ObjectWith/ScreenWidth, etc. Then set the origin X and Y to the screen width - screenXsize*widthPercent alterable value, and screen height - screenYsize*heightPercent alterable value respetively; then set the area to screenXsize*widthPecent for width, and screenYsize*heightPercent for height.
-
Best solution is to not have separate code for each team but to use an Alterable Variable instead.
Give each player an Alterable Variable "team". 0 = Red, 1 = Blue. Yes you could use a Flag if you wanted to, but an Alterable Value will give you the leniency in the future to add Green Team, Yellow Team, etc. if need be.
Then use the Alterable Value to set team colors and members and such, but moment-to-moment gameplay will just be single functions, rather than copied functions. This way no team will have process advantage over the other, your codebase will be far more optimized, and you won't have to worry about making sure the functions are the same between all players as they just will be.
-
What you'll want to do is run a Fast Loop x number of times, once per object. So for instance if you want 100 objects, you'd run fast loop "makeObjects" 100 times.
Then on the "makeObjects" loop, you'll run the Create function, and run the "Create Object at..." function, which will allow you to specify the X and Y coordinates. Set the X to a Random Range between like 0 and Frame Width, and the Y to a Random Range between 0 and Frame Height (should look like RRandom(0,Frame Width) and RRandom(0,FrameHeight)). Adjust as needed from there.
-
-
You're better off pretending there is no movie file compatibility in Fusion. Try cutting your movie up into individual pieces, the smaller the better, and running it programmatically in the engine itself, rather than rendering it ahead of time. In the end you can piece together a much faster, more optimized, and more dynamic "movie" by running it like a game demo in the background.
-
Workshop 8-bit signed/10-bit unsigned issue got fixed a while ago. Haven't had any problems with it in a couple years. Make sure you download the latest version of the extension.
What I would love to see is the ability to properly enable/disable the extension both in-engine and at runtime so a game can be brought to multiple platforms without having to potentially damage code by removing the Steamworks extension completely.
-
Got my Steam Deck about a week ago and just updated my game with some fixes to smooth things out. Game ran at an okay 50-55 fps normally, but turning a few effects down got me to 57-60fps. Did need to extend some end-of-frame and start-of-frame moments as fades wouldn't complete, or looping sounds would come in early and kind of cram together before actually playing. But now that I've patched some cleanups it's running great!
-
Give your character two alterable values called "shakeX" and "shakeTimer."
Set its X position to X Position("character")+shakeX.
Set the shakeTimer to your FrameRate*2, and Always substract 1 from the shakeTimer.
When shakeTimer<FrameRate*0.5, and shakeTimer mod FrameRate*0.25=0 (Compare to two Values), set shakeX to RRandom(-1,1)*100.
When shakeTime=0, set ShakeTimer to FrameRate. -
Undo is by editor window. Frame editor, event editor, etc. Once you change editors, the undo cache clears. It's rudimentary but it DOES all but guarantee Fusion doesn't RAM leak from storing every possible change in every possible window.
If you're worried about how a specific event is gonna work or not work, duplicate it and deactivate the duplicate. Then you'll at least have a backup state of those lines of code that you can revert back to instantly, and without any Git, Subversion, or Perforce shenanigans.
-
The fact that this doesn't exist quite yet AND I never even thought about needing it boggles the mind.
Similarly, is there a way to stay on the line I have selected when I've been viewing the event editor under a single object but then unclick it to get back to viewing all events?
-
I just had a really weird thought. Now that Apple Silicon is a thing, and you basically have to export iOS Apps to run on Mac now... any chance we might see a version of the - or a brand new - Steamworks object for "iOS" compatibility? Obviously this wouldn't work on iOS specific devices, but if you can run Steam on Apple Silicon Macs, and iOS extensions are written in Objective-C, would a port be theoretically possible?
-
Yay, I see the list.
Yes the numbers are displayed as negative, but afaik it's not a problem, the correct value is passed to the Steamworks object. The problem was just the floating point conversion done by the Val function.
On my machine the files are correctly downloaded in the Downloads sub-folder of the MFA.
Wait. WHAT? How. They're still not downloading on my end and I'm still getting the error.
I am so confused. -
Yes you have to add a line before being able to set its data. But anyway I'm trying to test the Array solution, I add the item ID to the list at the same time just to see it on screen, but after suscribing to 3 items it doesn't list anything (I've added a counter that is incremented on each loop, just to be sure). I'm using the first example you posted.
Alright I spiced things up a little bit, the results are the same but the data is a little clearer. It now starts with an Add Line function, which lists the Workshop item title. Each line stores the ContentID number, but they're still coming out negative. I also added a counter at top to display the ContentID.
Here's the updated MFA, it should work as is but just in case make sure the Steam AppID is set to 1087050.
-
I was having that same problem too. It does if you convert the values to strings and add them as a line, but not if you add line data.
Make sure though that you've gone over to workshop and subscribed to one or two items, because the Steam object's loop looks specifically for subscribed items, not all items.
-
That would be easier
xxxxxxxxxxxxx
That should work unless a bot gets to it first, in which case I'll email one over to you. -
This is not normal, are you sure you used the correct index?
My setup looks like this:
* SteamWorks : On loop through search content results in session "subs"
List : Set line SteamLastUGCLoopIndex( "SteamWorks" ) data to SteamLastUGCContentId( "SteamWorks" ) [The line # = the SteamLastUGCLoop Index]
steamData : Write Value SteamLastUGCContentId( "SteamWorks" ) to (SteamLastUGCLoopIndex( "SteamWorks" )) [This writes the last ContentID value to to the loop index X spot on the array]
steamChecker : Set lineDataValue to List Data( "List", SteamLastUGCLoopIndex( "SteamWorks" ) ) [This is the alterable value that checks the line data value]QuoteWell, negative values are OK as they are correctly converted when they are passed as parameter to the Steamworks object (what was not OK was the floating point value returned by Val).
I'll reactivate the download function again pull the values from the array instead and see what happens there.Edit: No dice. I made some small changes to add a "numberOfFiles" value to the active. Then it's supposed to download the workshop file at the ContentID in the corresponding array X position, and stop when fileNumber("steamChecker") == numberOfFiles("steamChecker") but I get the statusErrorFailedToDownloadFile message again. I think what was preventing the error from appearing this time was comparing the fileNumber value to the number of lines, and since there were no lines, it basically started out finished.
QuoteSorry I can't test your app, it doesn't display anything on my machine (I guess because I don't own the Steam app?), but I'm pretty sure this works (I tried with a simple Download File action from the value that's in your example, via a List line data, and I didn't get the error message).
Lemme know if you want a key. -
In your example the problem comes from the Val function that you use to convert the string content from the List object. Val works with signed integers, and if the value is out of range (i.e. less than -2147483647 or greater than 2147483648), it converts it to a floating point value, and then when it's converted back to an integer value when it's passed to the Steamworks object, it gets out of range and an incorrect limit value is passed.
A possible solution is that you store the content ID to the line data in the List box object, and directly retrieve it from there, instead of using Str$ and then Val:
List : Set line fileNumber( "steamChecker" ) data to SteamLastUGCContentId( "SteamWorks" )
...
SteamWorks : Download file to Apppath$ + "\Downloads\" for content with id List Data( "List", fileNumber( "steamChecker" ) ) at priority 0
Is this possible and does this work?
Gave this a test, tried it a couple different ways, and just couldn't get the list data to store the SteamUGCContentID. Always came out as -1. So, on a whim, I also added a number array to store the values, and they came out with the negative values I got when trying to store the value as a string.
MFA attached.
-
Thanks, Yves. This one's really got me in a panic. I dunno what the plan is if content isn't downloadable.