The Dink Network

Lil Dinky - A kind of DFARC replacement project

May 22nd, 04:26 PM
goblins.gif
ebilV
Peasant Male
 
A few months ago, I was chatting about this and that with Skurn and Bluedy over on the discords, when I had this idea...

FreeDink is cool, but it's kind of a hassle to install right for newcomers. Due to licensing issues and whatnot, you can't really distribute it bundled together with the original V1.08 Dink Data and etc. But then I thought, wait, couldn't you automate the installation process? Have a script or tool download FreeDink, download Dink V1.08, and install a copy of FreeDink with the original Dink data?

Anyway, long story short, I started working on something like that, and ended up with a kind of DFARC replacement application.

For lack of a better name, I've been calling it "Lil Dinky" [Probably gonna change this for the "final" release, but that is quite some ways away]

So what can this Lil Dinky do and where can you get it?
- Well, for now I have some "alpha" versions up on OneDrive, along with the source code to them:
https://1drv.ms/u/s!AnJELDdVd4tqgy2BRUXcctpcUdlP?e=gZspNk
- I'm releasing the source under MIT license, so anyone can do whatever they feel like with it
- It's developed in C# using Avalonia UI, with the intention that when it's done I might port it to Linux at some point...

What can it do so far?
- It can install a bunch of versions of Dink with but a few clicks of a button! [*]
+ FreeDink with V1.08 data and localization files for the main game
+ FreeDink with V1.08 data
+ Dink V1.08
+ Dink HD
- It can install DMODs
- It has a functional DMOD browser
- You can add *unlimited* DMOD installation folders / Dink engines and launch any of the dmods with whatever engine you choose [**]
- The DMOD browser looks kind of nice, I think
- You can define custom localization files for the text in the application itself, but I'm not going into detail on how that works right now...

[*] - So basically, the way the installer process works, is it downloads the game archives from over here on the dinknetwork.com, then it extracts certain files to a location of your choosing based on some whitelist/blacklist filtering. The installation is scriptable using the "config\configInstallerList.json" file... I should probably document this at some point.

[**] - Some limitations may apply, for example Dink V1.08 doesn't seem to like certain path formats...

What other features do I want to add but aren't included yet?
- An online DMOD browser (kind of like in DinkHD but nicer...);

What's the catch?
- This is a work in progress, there may be bugs, although hopefully nothing too severe! So far it "works for me (tm)" and Bluedy / Skurn managed to run it just fine too...
- I don't really have a manual for this thing or anything of the sort... (Although it should be pretty intuitive, that's the whole point after all)
- I kind of wanted to test it more, but Skurn/Bluedy/RobJ aren't really giving me any feedback about potential problems, so I suppose it works well enough?
- I'm basically posting this in the hopes that someone might test it and point out more issues / give me ideas on what to improve

Known issues
- Uh, apparently after you install a version of Dink for the first time, if you go to Tools -> Settings, it doesn't show up under "Game Locations" correctly until you hit Cancel and go to Tools -> Settings again... I thought I had fixed this but I guess I didn't yet

Other ramblings:
- So, over on the One Drive folder, I have some screenshots if you wanna see what it looks like!
Screenshots: https://onedrive.live.com/?authkey=%21AIFFRdxy2lxR2U8&id=6A8B7755372C4472%21430&cid=6A8B7755372C4472
- The latest version right now is V0.0.4, so if you want to try it out, make sure to download that and not an older version.
- If you want to build it yourself, all you need to do is get Visual Studio Community edition and load up the solution file
- You can hit me up on discord for more info
- For now I'm just hosting the builds / source over on my One Drive, but I plan to upload it to github once it reaches a proper release state.

PS: Another reason I'm basically posting this, is that I feel like I'm behind schedule with finishing it and I'm trying to light a fire under my ass to motivate myself to get it done faster. Basically, feels like I had started off strong but then been getting sidetracked this last month.
May 22nd, 10:22 PM
custom_king.png
redink1
King Male United States xbox steam bloop
A mother ducking wizard 
This is a truly inspired idea. Great job!

When you finish, I can promote it on the main files page.
May 23rd, 01:41 AM
goblins.gif
ebilV
Peasant Male
 
Thanks!

It'll probably be a while longer. When I do the whole online dmod browser thing, I'll have to be careful and make sure I don't accidentally flood the website with requests. That would be very bad haha

(PS: Removed the shrug ascii emojis from the original post since I just realized they were not rendering correctly huh...)
May 24th, 04:25 AM
peasantmp.gif
Skurn
Peasant Male Equatorial Guinea xbox steam duck bloop
can't flim flam the glim glam 
can you also stop promoting dinkhd
June 13th, 01:41 PM
goblins.gif
ebilV
Peasant Male
 
Updates!

The Online DMOD browser is mostly working.

You can see all the DMODs, each individual file version release, all the reviews and the screenshots.

Files get cached locally so you don't have to download new things every 2nd time you look at the same dmod.

Here are some screenshots:
- Screenshot viewer
- DMOD versions
- Local DMOD Browser

Here is the current release, V0.1.1 and the source.

(Although you can also find them in the original link in the first post, it's the same one drive folder)

So what's left is basically:
- more testing
- more bug fixing
- GUI improvements
- other suggestions?
June 13th, 06:49 PM
spike.gif
Slipdink
Peasant Male United States bloop
2nd generation. No easy way to be free. 
- other suggestions?

I don't suppose you have plans to make this a multi-platorm application?
June 14th, 04:01 AM
goblins.gif
ebilv
Peasant Male
 
>I don't suppose you have plans to make this a multi-platorm application?

Actually, I do. Already using a multiplatform GUI framework, so the only issue with porting it on linux is my own inexperience with linux and figuring out how to use the 7zip library I'm using under linux.
It's probably gonna take a while though.
June 17th, 06:37 PM
goblins.gif
ebilV
Peasant Male
 
Sneaky peaky of LilDinky under Ubuntu 22.04

Ok, so the application itself runs without much trouble once built under lunix. But of course I can't quite unzip anything since I'm using a package that relies on a 7z.dll that can't work on linux.

Other than that, I've discovered that a package I use for messageboxes also breaks under linux. So I'll have to rewrite my own custom messageboxes, no biggie.

...and of course, the way the game launcher filter is set up right now, it has the user look for an .exe file, have to adapt that too.

So all in all, I'll have to get my bearings and figure out the unzipping thing since I never developed anything for linux before, but other than that it should be easy peasy.
June 18th, 09:40 AM
spike.gif
slipdink
Peasant Male United States bloop
2nd generation. No easy way to be free. 
7zip is available has been available for years as a command that runs in the shell. Maybe you could just exec that command with the parameters that you need to get the results that you need.
June 18th, 12:47 PM
goblins.gif
ebilV
Peasant Male
 
Yeah, that was my thought too. I was looking into p7zip actually: https://sourceforge.net/projects/p7zip/
Although, I'm also looking at this, https://github.com/adamhathcock/sharpcompress

I could do something like using the current 7zip lib wrapper on windows. Then on linux use Sharpcompress to install dmods without relying on running p7zip, and for installing freedink with v108 data, that can be handled through bash scripting (although I have to look into that a bit since i'm quite a noob when it comes to such things).

Although ideally... I wouldn't want to use two different LZMA packages for windows and linux, would much rather just use Sharpcompress directly on windows too, but alas it can't handle Dink V108 and Dink HD NSIS installer archives natively, so I have to parse the file a bit before i can decompress it. Currently looking into that.
June 18th, 05:53 PM
spike.gif
Slipdink
Peasant Male United States bloop
2nd generation. No easy way to be free. 
Well, if you need help with any linux/unix shell scripting let me know. The bash shell is quite powerful so you should be able to do anything you need to do.

One important thing to do is to choose a compression approach that will let everyone still use dfarc to install any dmod that Lil Dinky generates. After all, fans that get their first taste of dmods from Linux, pretty much have to use dfarc (at least to start). So, I'd guess that means making certain that Lil Dinky uses bzip2 as the actual compression algorithm.
June 19th, 06:06 AM
goblins.gif
ebilV
Peasant Male
 
OH!! Right!

I knew I was forgetting one important thing! I don't have any "pack dmod" option ahaha! I dunno how no one even mentioned that before!

Basically, since it detects a dmod folder, it just needs to .tar and then .bzip2 the dmod folder you select and that's it.

I do have one question though... The original DMOD format is kind of... broken. In the sense that it does not respect proper .tar format. The .tar-ed data needs to be a multiple of 512 bytes, so the file needs to be padded with 0x00s. Additionally the last two 512 byte blocks in the .tar file are supposed to be filled with 0x00, so that's 1024 more 0x00 padding bytes. Dmods do not respect this, so some dearchiving programs give you a warning that the archive is badly formatted or something when you manually extract it.

Now the question is, when generating a dmod file, and creating the .tar, should I respect the standard .tar format and pad the file with 0x00 at the end? Or should I just use the "borken" format that dmods use where all the extra 0x00s at the end get discarded?...

I imagine DFArc 3 can interpret both valid and incompelte .tar formats, but I dunno about older versions?...
June 21st, 05:56 AM
peasantmb.gif
yeoldetoast
Peasant Australia steam
I've come to get my meat 
Please for the love of God just generate regular GNU Tar-compliant tar.bz2 files. DFarc2 and older shouldn't be used by anyone for any reason at this point, and those non-compliant Tars are a nightmare for people who don't want to use a front-end. It will also save you a ton of effort.
June 21st, 08:54 PM
peasantmp.gif
Skurn
Peasant Male Equatorial Guinea xbox steam duck bloop
can't flim flam the glim glam 
i have no issues with dfarc2. i can only surmise there is nothing wrong with it.
June 21st, 10:46 PM
peasantmb.gif
yeoldetoast
Peasant Australia steam
I've come to get my meat 
I think it's only DFarc 1.x where Merlin made up his own Tar encoder anyway. Everything from 2 onwards should be compliant.
June 22nd, 12:46 PM
goblins.gif
ebilV
Peasant Male
 
@yeoldetoast
>and those non-compliant Tars are a nightmare for people who don't want to use a front-end
Haha, I've definitely been frustrated dealing with that before...

>It will also save you a ton of effort.
Yeah, I suppose it does, since I don't have to take a valid .tar and "break" it for the sake of buggy legacy compatibility :V