Now Uses Less CPU!


My biggest pet peeve is using too many resources, especially CPU power. Before the 0.4 series my TODO—List ran at around 6-8% in the task manager. I added some improvements in 0.4.1 which brought it down to around 3%. In 0.4.2 that number is down around 2% more or less.

Despite the improvements, it pains me to see that LINK still sits around 2%, I’d like to see if there’s anything I can do to ease that little bit but for now it’s better than it was before.

Profiling Code

Going into the 0.4.1 update, I knew I could get some performance improvement but I went in blind. I’m not sure if my assumptions were correct or if I merely got lucky and happened to fix a related issue that was the real problem.

So this time I created a simple profiling tool. The tool simply sets a start point and a lap point and records the time at each. After a period of time I can dump the data which currently gives me the average time and percentage of a 60 Hz update tick.

Why am I not sure whether my assumption is correct or not? Well, I put my profiler around a similar piece of unoptimized code and it barely made a blip in the overall time (see: “Lap Data wall find”).

Now I’m not sure what the actual problem was. I can make some guesses, but unless I profile the old code first, I won’t know for sure.

Overall, my update loop is rather fast at ~1.4% of 60Hz, at least compared to the ~3.4% of 60Hz render loop.

I have some ideas where I can optimize the render pipeline but at the moment it’s quite fragile. I think I caught all the new render bugs that popped up because of the optimizations but “I think” has gotten me in trouble before.

I’m still working on reorganizing the code a bit so I can make some of these changes a little more worry free.

Bug Fixes and Other Improvements

Pasting Text

I’ve fixed and broken pasting a few times this week but I think I finally got it figured out. Just be sure to save often in case everything breaks and a reload is necessary.

Prompt Quitters with Unsaved Changes

Pressing the X button (currently the only way to Quit) now asks you if you’d like to discard any changes if you have any unsaved work.

Missing Files Handled Marginally Better

When you rename an active link file but don’t load the newly renamed file (by drag and dropping it onto LINK), the next time you reload or restart LINK, a dialog will pop up warning you it’s missing.

It was hastily done and really pointed out how much I need to re-work my dialog system (which was also hastily done).

There’s certainly some problems with this fix, but it’s something that isn’t likely to be part of your everyday LINK experience and I’m looking to implement something better to replace it so it’s going to stay for awhile.

Git!

Only makes me feel safer at night (and when making drastic changes). It doesn’t really affect you in anyways.

LINK and the Engine Source Code

I was recently asked whether or not I’d be releasing LINK as open source. I had mulled it over and at this time I don’t see any reason to.

As it stands the code is not really all that useful and in some cases down right dangerous. I reveled in completely ignoring any good programming practices. You could take a look for yourself, the code is right there in crazy.agpack but it’s scary, even for me, to look at.

But the engine that LINK runs on is open source. (I used to have an old copy of it on GitHub but long since took it down.)

All the good code that I write for LINK that I think has value in my other projects will go into the engine and eventually uploaded to GitHub or similar service. I’ll be looking to get some version of it uploaded soon.

On the other hand, I’ll eventually make accessing LINK’s source code even more difficult.

I won’t be able to give my full reasoning justice here but I’ll try to keep it simple.

I like modders. I like hackers. I like pirates. I like people who look at an obstacle and decide, “I can get over that. Nothing will stop me!”

Obligatory: I intend on selling my software and hope people will want to support my products but pirates are here to stay and I can’t help but love what they do.

In turn want to inspired a group of modders to take over hacking LINK. Anyone who’s determined enough will be able to reverse engineer any obstacle I put in the way. Then anyone who’s determined enough will be able to setup LINK to create unofficial mods.

I don’t want to make it too easy nor do I want to officially support it but I certainly look forward to the day some one cares enough to try.

Maybe one day I’ll expand on my philosophy here but that’s at least an essay’s worth of work.

What’s Next

So many things and I’m not really sure which ones I’ll get to and which ones will have to wait (or have to cut completely).

For starters, I’m still getting things settled , cleaning and tidying my project files.

Expect another release in a week or so with more bug fixes and tweaks.

Also, there’s L.I.N.K. Jam, presented by The Tool Jam, coming up in a month or so. I’ll be working out those details soon because we’d both like to get the jam up on the board.

The short of it (pending any changes) is to work on a jam product that uses LINK in some way. This can be as simple as using it to organize your project notes to using it as a level editor. I want to keep it fun and can’t wait to see what can be done using LINK in the expected and unexpected ways.

I’ll be posting more updates about L.I.N.K. Jam so keep an eye out for that.

Files

L.I.N.K. v0.4.2 3 MB
Jun 12, 2021

Get LINK!

Leave a comment

Log in with itch.io to leave a comment.