00:10:06 | FromDiscord | <DetermiedNim1> In reply to @demotomohiro "Nim manual explains how": how would i do inheritance? |
00:10:21 | FromDiscord | <DetermiedNim1> sent a code paste, see https://play.nim-lang.org/#pasty=TWDBSgin |
00:23:59 | FromDiscord | <demotomohiro> In reply to @determiedmech1 "how would i do": If you need to override C++ virtual functions: https://nim-lang.org/docs/manual_experimental.html#virtual-pragma |
01:01:23 | FromDiscord | <DetermiedNim1> kk |
01:01:27 | FromDiscord | <DetermiedNim1> thanks |
01:16:37 | FromDiscord | <DetermiedNim1> yeah i just have no idea where i'd start |
01:41:18 | FromDiscord | <that_dude.> sent a code paste, see https://play.nim-lang.org/#pasty=EZGlxPNq |
01:41:42 | FromDiscord | <that_dude.> (edit) "https://play.nim-lang.org/#pasty=QmGeAvHe" => "https://play.nim-lang.org/#pasty=BBGhFCjC" |
01:42:44 | FromDiscord | <DetermiedNim1> ok so |
01:43:39 | FromDiscord | <Robyn [She/Her]> In reply to @user2m "how would you guys": could look at ed25519 |
01:43:39 | FromDiscord | <DetermiedNim1> actually wait |
01:44:07 | FromDiscord | <DetermiedNim1> is `object of` similar to inheritance in this case |
01:44:13 | FromDiscord | <Robyn [She/Her]> There's a ed25519 lib as well as a libsodium mapping iirc |
01:44:20 | FromDiscord | <that_dude.> I didn't really ever use the `this` param, but it was there for the compat |
01:44:21 | FromDiscord | <Robyn [She/Her]> In reply to @determiedmech1 "is `object of` similar": It's used for single inheritance yes |
01:44:33 | FromDiscord | <Robyn [She/Her]> not sure how it plays with C++ code tho |
01:44:49 | FromDiscord | <that_dude.> I compiled with `cpp` and never had any issues. |
01:45:26 | FromDiscord | <that_dude.> Though I'm not sure if cpp name mangling could be an issue. Because the lib I worked with wrapped the cpp interface with `extern C` or smth like that |
01:46:33 | FromDiscord | <Robyn [She/Her]> name mangling shouldn't be an issue if you're compiling against the C++ source |
01:46:40 | FromDiscord | <Robyn [She/Her]> With the cpp backend |
01:47:43 | FromDiscord | <that_dude.> Either way, as long as you use the header pragma there should be no issues with telling nime that `TimedRobot` is an object that exists. You may need to change the pragma a little bit in order to get the `frc` namespace to be included, but you should be able to find out whether you need that online |
01:47:54 | FromDiscord | <that_dude.> (edit) "nime" => "Nim" |
01:48:07 | FromDiscord | <that_dude.> (edit) "object" => "object/class" |
01:48:14 | FromDiscord | <DetermiedNim1> Could I just emit `using namespace frc` |
01:48:41 | FromDiscord | <Robyn [She/Her]> you can (probably) but please don't |
01:48:49 | FromDiscord | <DetermiedNim1> ok |
01:48:52 | FromDiscord | <that_dude.> Yeah, I just tried to avoid using emit since it didn't feel `right` |
01:48:55 | FromDiscord | <Robyn [She/Her]> isn't using the `using` statement bad practice? |
01:49:06 | FromDiscord | <Robyn [She/Her]> Especially when names can clash |
01:49:21 | FromDiscord | <that_dude.> (edit) "`right`" => "_right_" |
01:49:45 | FromDiscord | <DetermiedNim1> fair |
01:51:06 | FromDiscord | <DetermiedNim1> Hmm |
01:51:27 | FromDiscord | <DetermiedNim1> should I do smth about TimedRobot inheriting from IterativeRobotBase |
01:51:35 | FromDiscord | <DetermiedNim1> or is it fine |
01:53:31 | FromDiscord | <DetermiedNim1> wait I can send a zip of the example code |
01:53:58 | FromDiscord | <that_dude.> sent a code paste, see https://play.nim-lang.org/#pasty=ZhFWQcSM |
01:54:34 | FromDiscord | <that_dude.> But don't forget that the nim compiler just generates C/C++ code and then hands it to the gcc |
01:54:37 | FromDiscord | <that_dude.> (edit) removed "the" |
01:54:40 | FromDiscord | <DetermiedNim1> ok |
01:54:50 | FromDiscord | <that_dude.> Sorry I also have homework lol |
01:55:02 | FromDiscord | <that_dude.> I can't share the repo since it's private :/ |
01:55:12 | FromDiscord | <DetermiedNim1> np |
01:55:39 | FromDiscord | <that_dude.> But you shouldn't need to worry about the IterativeRobotBase since you wouldn't need to care about it if you writing the code yourself |
01:55:54 | FromDiscord | <DetermiedNim1> that makes sense |
01:56:04 | FromDiscord | <that_dude.> You just say "This class/object exists. Also these signatures exist" and then the Nim compiler will trust you |
01:56:07 | FromDiscord | <that_dude.> (edit) "You just say "This class/object exists. Also these signatures exist" and then the Nim compiler will trust you ... " added "that they do" |
01:57:09 | FromDiscord | <that_dude.> And as long as you have the `header` pragma anywhere in the file (Idk how much ordering mattered), all of the needed symbols should be imported in the generated CPP code |
02:15:16 | FromDiscord | <devlop_gaming> Is there a section in the documentation that explains what normalizePath() does and or return? |
02:15:59 | FromDiscord | <that_dude.> https://nim-lang.org/docs/theindex.html |
02:16:08 | FromDiscord | <that_dude.> ctrl+f |
02:20:28 | FromDiscord | <devlop_gaming> Ok so i did have the wrong procedure |
02:20:51 | FromDiscord | <devlop_gaming> Do you know how i can convert a path into a string? |
02:22:05 | FromDiscord | <that_dude.> I'm presuming https://nim-lang.org/docs/paths.html#%24.t%2CPath |
02:22:57 | FromDiscord | <that_dude.> This means the actual data type/shape is string. This means that `string(path_val)` will convert it back to the string https://media.discordapp.net/attachments/371759389889003532/1363701510411780197/image.png?ex=6806fd80&is=6805ac00&hm=04a06cdb9dd61e44f2bcc2dfce3e15a5f6722a29d529900a9f14b7ce2c142c9e& |
02:23:18 | FromDiscord | <that_dude.> (edit) "This means the actual ... data" added "underlying" |
02:25:21 | FromDiscord | <that_dude.> Distinct just means "This is a string, but don't let it work with any other procs that work on string by default" |
02:27:18 | FromDiscord | <devlop_gaming> sent a long message, see https://pasty.ee/ilNxelhx |
02:29:58 | FromDiscord | <that_dude.> `cstring` is compatible-string for interop with C/Cpp. It's different from a regular string. I don't see the issue atm, but I would take a look at what string you generate (and what type it is) and also check what types the arguments should be. I bet there's an issue there. |
02:30:19 | FromDiscord | <that_dude.> (edit) "would" => "recomend you" |
02:35:14 | FromDiscord | <devlop_gaming> This is a bit complicated |
02:35:36 | FromDiscord | <that_dude.> What is the signature of TTF_openFont |
02:36:04 | FromDiscord | <devlop_gaming> proc TTF_OpenFont(file: cstring, ptsize: float): TTF_Font {.dynlib:"SDL3_ttf", importc:"TTF_OpenFont".} |
02:36:13 | FromDiscord | <that_dude.> So it looks like file expects a cstring |
02:36:35 | FromDiscord | <that_dude.> but the path you generate is a with the format string is of type `string` |
02:36:47 | FromDiscord | <devlop_gaming> Well yea but the problem happens here $(absolutePath()) |
02:37:05 | FromDiscord | <that_dude.> So you would need to cast/convert it to get it to work |
02:37:28 | FromDiscord | <that_dude.> `$()` is like repr where it converts the object to a string |
02:37:32 | FromDiscord | <that_dude.> (edit) "string" => "`string`" |
02:38:20 | FromDiscord | <that_dude.> I would suggest looking up how to convert string to cstring and I bet it fixes your problem |
02:38:51 | FromDiscord | <devlop_gaming> Don't i just use cstring()? |
02:39:35 | FromDiscord | <that_dude.> cstring is a type so you can `cstring(original_string)` to cast/convert it |
02:40:12 | FromDiscord | <DetermiedNim1> i think |
02:40:15 | FromDiscord | <DetermiedNim1> wpilib |
02:40:27 | FromDiscord | <DetermiedNim1> is almost like smalltalk or ruby |
02:40:36 | FromDiscord | <DetermiedNim1> oop all the way down |
02:40:40 | FromDiscord | <devlop_gaming> In reply to @that_dude. "cstring is a type": Still getting a type mismatch error |
02:41:07 | FromDiscord | <that_dude.> In reply to @devlop_gaming "Still getting a type": That's all of my knowledge unfortunately |
02:41:28 | FromDiscord | <that_dude.> Maybe try splitting things up to see what section specifically is causing it. |
02:41:48 | FromDiscord | <that_dude.> Btw if you get a GCC compiler error that's bad and is a bug. All errors should come from the nim compiler. |
02:42:35 | FromDiscord | <devlop_gaming> In reply to @that_dude. "Maybe try splitting things": the section i showed you |
02:43:30 | FromDiscord | <that_dude.> What if you assigned each step in the string gen to a different variable and then checked which operation causes the issue |
02:43:41 | FromDiscord | <that_dude.> Cus there's quite a bit going on in that line |
02:44:17 | FromDiscord | <that_dude.> Sorry back to work for me |
02:45:36 | FromDiscord | <devlop_gaming> I wasn't expecting such a small task to get so complicated |
02:45:56 | FromDiscord | <that_dude.> Were there any examples in the docs? |
02:46:24 | FromDiscord | <that_dude.> Btw it could also be the `fmt` part because iirc there is a warning about using `fmt` instead of `&` or whatever it is |
02:46:57 | FromDiscord | <devlop_gaming> What was the warning? |
02:47:09 | FromDiscord | <that_dude.> idk I need to work on homework |
02:47:46 | FromDiscord | <devlop_gaming> Ok |
02:48:34 | FromDiscord | <that_dude.> Debug printing is your friend |
02:51:24 | FromDiscord | <devlop_gaming> I tried to print the value and got an error |
02:52:09 | FromDiscord | <devlop_gaming> This is making less and less sense |
02:52:46 | FromDiscord | <that_dude.> I can take a quick look at the full error |
02:54:36 | FromDiscord | <devlop_gaming> https://media.discordapp.net/attachments/371759389889003532/1363709476087009400/Screenshot_2025-04-20_215358.png?ex=680704eb&is=6805b36b&hm=fcdc845ff87b5d9f3b0a506f29fae921a23020de198b8949e650d5dae15d3dad& |
02:55:03 | FromDiscord | <that_dude.> Is it the same after compiling? |
02:55:28 | FromDiscord | <devlop_gaming> I didn't compile yet this is the error i get soon as i save the file |
02:55:46 | FromDiscord | <that_dude.> I would take LSP error with a grain of salt, it's something that's still in heavy development |
02:55:53 | FromDiscord | <that_dude.> (edit) "error" => "errors" |
02:56:21 | FromDiscord | <devlop_gaming> Yes it's the same error |
02:56:22 | FromDiscord | <DetermiedNim1> if you need to convert Path to string can't you just do `p.string.cstring` |
02:56:30 | FromDiscord | <DetermiedNim1> (edit) "`p.string.cstring`" => "`path.string.cstring`" |
02:56:35 | FromDiscord | <that_dude.> Though if I take a look at signature, the first parameter `path` is required and needs to be set |
02:57:02 | FromDiscord | <that_dude.> In reply to @determiedmech1 "if you need to": Seems reasonable to me |
02:57:13 | FromDiscord | <DetermiedNim1> yeah i just tested it |
02:57:29 | FromDiscord | <devlop_gaming> Still a type missmatch this time it starts at fmt |
02:58:16 | FromDiscord | <that_dude.> Like I said, I'm pretty sure there's a warning in fmt that it returns something that's technically not a string or smth |
02:58:36 | FromDiscord | <that_dude.> They tell you exactly what it returns, you may just need to cast it |
03:00:05 | FromDiscord | <devlop_gaming> What does it return? |
03:00:13 | FromDiscord | <that_dude.> Idk man, just look it up |
03:00:21 | FromDiscord | <that_dude.> I'm working on a quiz rn |
03:01:11 | FromDiscord | <devlop_gaming> You always are free to leave.. |
03:01:17 | FromDiscord | <that_dude.> 👍 |
03:09:03 | FromDiscord | <Robyn [She/Her]> In reply to @determiedmech1 "if you need to": You should be able to do `$path.cstring` |
03:09:12 | FromDiscord | <DetermiedNim1> Well |
03:09:13 | FromDiscord | <DetermiedNim1> yeah |
03:09:27 | FromDiscord | <DetermiedNim1> cause $x is x.string |
03:09:30 | FromDiscord | <Robyn [She/Her]> maybe even `path.cstring` but prolly not |
03:10:18 | FromDiscord | <Robyn [She/Her]> In reply to @determiedmech1 "cause $x is x.string": Not really? It's a string representation of any type, it's just that `Path` is a `distinct string` which is why `mypath.string` works |
03:10:32 | FromDiscord | <DetermiedNim1> ah ok |
03:10:49 | FromDiscord | <Robyn [She/Her]> (edit) "type," => "type (implementing the function)" |
03:10:57 | FromDiscord | <DetermiedNim1> In reply to @battery.acid.bubblegum "maybe even `path.cstring` but": yeah no it raises an error |
03:11:03 | FromDiscord | <Robyn [She/Her]> sad but oh well |
03:11:11 | FromDiscord | <devlop_gaming> The error is coming from fmt proc itself. Why? |
03:11:27 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "The error is coming": what's your code? |
03:12:08 | FromDiscord | <devlop_gaming> font = TTF_OpenFont(fmt"{absolutePath().string.cstring}/fonts/EustaceRegular-woxrz.ttf", 45.0) |
03:12:33 | FromDiscord | <Robyn [She/Her]> you should use backticks to surround code btw |
03:12:49 | FromDiscord | <devlop_gaming> (edit) "font" => "`font" | "45.0)" => "45.0)`" |
03:13:23 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "`font = TTF_OpenFont(fmt"{absolutePath().string.cst": Also absolutePath requires an argument |
03:13:25 | * | beholders_eye quit (Ping timeout: 248 seconds) |
03:13:34 | FromDiscord | <devlop_gaming> What argument? |
03:13:56 | FromDiscord | <Robyn [She/Her]> As for why it says the fmt proc is causing an error, it's just because of how the compiler tracks errors unfortunately |
03:14:13 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "What argument?": https://nim-lang.org/docs/paths.html#absolutePath%2CPath |
03:14:37 | FromDiscord | <devlop_gaming> path? |
03:14:44 | FromDiscord | <Robyn [She/Her]> you could also just use this and avoid the conversion to string: https://nim-lang.org/docs/ospaths2.html#absolutePath%2Cstring |
03:15:04 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "path?": `Path(".")` |
03:15:18 | FromDiscord | <Robyn [She/Her]> `Path` is a distinct string for type safety reasons |
03:16:07 | FromDiscord | <Robyn [She/Her]> i heavily recommend reading the docs |
03:16:31 | FromDiscord | <Robyn [She/Her]> And avoiding what LLMs say about Nim, as a general rule |
03:17:29 | FromDiscord | <devlop_gaming> Why? |
03:18:47 | FromDiscord | <devlop_gaming> Also i'm still getting errors↵↵`attempting to call undeclared routine: '.'` |
03:18:54 | FromDiscord | <Robyn [She/Her]> Nim is a bit niche so there's not as much training data, and bc it's compared to Python so much, it can mix up Python quite often |
03:19:35 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "Also i'm still getting": Atp you should just declare a variable to store the result of absolutePath |
03:19:51 | FromDiscord | <devlop_gaming> In reply to @battery.acid.bubblegum "Nim is a bit": Errors seem accurate to what the compiler give me and also it saves me time so i won't have to wait a long time for it to compile |
03:20:33 | FromDiscord | <devlop_gaming> In reply to @battery.acid.bubblegum "Atp you should just": What would i do with the variable afterwards? |
03:20:52 | FromDiscord | <devlop_gaming> It would only be used once and sit in memory until the program ends |
03:21:25 | FromDiscord | <Robyn [She/Her]> wait |
03:21:34 | FromDiscord | <Robyn [She/Her]> why are you casting to cstring too? |
03:21:47 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "It would only be": create a block then, hold on |
03:21:47 | FromDiscord | <devlop_gaming> huh? |
03:22:23 | FromDiscord | <devlop_gaming> What's a block? Is it like rust block or whatever it's called? |
03:23:04 | FromDiscord | <Robyn [She/Her]> sent a code paste, see https://play.nim-lang.org/#pasty=lppOrYVD |
03:24:07 | FromDiscord | <Robyn [She/Her]> This works since Nim returns the last expression as the result of a block |
03:24:12 | FromDiscord | <devlop_gaming> Just so i can be sure this will give me the absolute path to the project folder right? |
03:24:19 | FromDiscord | <Robyn [She/Her]> works for functions, `block`s and if statements |
03:24:31 | * | amadaluzia quit (Remote host closed the connection) |
03:24:37 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "Just so i can": the current working directory |
03:24:51 | FromDiscord | <Robyn [She/Her]> If you want the directory of the binary, you want something different |
03:25:16 | FromDiscord | <Robyn [She/Her]> https://nim-lang.org/docs/os.html#getAppDir |
03:28:00 | FromDiscord | <devlop_gaming> So it retruns the directory of the application's executable. Does this mean it will return the directory Spark_Engine no matter where the executable is located in the project? |
03:28:54 | FromDiscord | <Robyn [She/Her]> if the binary is in spark engine, it'll return spark engine |
03:29:11 | FromDiscord | <Robyn [She/Her]> but if the binary is in some random ass dir, it'll return that random ass dir |
03:29:29 | FromDiscord | <devlop_gaming> Ohh i think i get it |
03:32:21 | FromDiscord | <devlop_gaming> In reply to @battery.acid.bubblegum "if the binary is": It's returning the directory the executabe is in instead of the project directory |
03:32:57 | FromDiscord | <Robyn [She/Her]> that is what i said it'd do, yeah |
03:33:50 | FromDiscord | <devlop_gaming> I need the parent directory tho |
03:46:25 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "I need the parent": please read the docs, i can't spoonfeed you to this degree |
03:49:05 | FromDiscord | <devlop_gaming> In reply to @battery.acid.bubblegum "please read the docs,": I did and I'm right back at the same problem |
03:49:23 | FromDiscord | <devlop_gaming> I found a proc that does what I want but it returns Path |
03:54:46 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "I found a proc": use `.string` to convert a Path into a string |
03:54:57 | FromDiscord | <Robyn [She/Her]> Or the `$` op if it exists |
03:56:49 | FromDiscord | <devlop_gaming> In reply to @battery.acid.bubblegum "use `.string` to convert": That's what i did and I got attempting to call undeclared routine |
04:01:07 | FromDiscord | <Elegantbeef> You certainly did not cause `Path("").string` is valid |
04:07:52 | FromDiscord | <devlop_gaming> What? |
04:08:14 | FromDiscord | <devlop_gaming> Yes i did |
04:08:23 | FromDiscord | <Elegantbeef> Nope |
04:08:38 | FromDiscord | <devlop_gaming> Omfg yes I did how you gonna tell me |
04:09:04 | FromDiscord | <Elegantbeef> Cause I know the language so I know that calling `string` on a `Path` will produce a `string` |
04:09:43 | FromDiscord | <devlop_gaming> font = TTF_OpenFont(cstring(fmt"{parentDir(Path(".")).string}\fonts\EustaceRegular-woxrz.ttf"), 25.0) |
04:10:22 | FromDiscord | <Elegantbeef> The error is? |
04:10:42 | FromDiscord | <Elegantbeef> You're also pointlessly using string formatting |
04:11:05 | FromDiscord | <Elegantbeef> Not to mention `parentDir(".")` does nothing |
04:11:10 | FromDiscord | <that_dude.> I feel like this would be way easier if you just bothered to look up each function signature |
04:11:13 | FromDiscord | <Elegantbeef> `.` does not have a parent dir |
04:12:05 | FromDiscord | <devlop_gaming> In reply to @that_dude. "I feel like this": Bruh i'm literally looking at docs what more do you want |
04:12:19 | FromDiscord | <devlop_gaming> In reply to @Elegantbeef "`.` does not have": So what is it then? |
04:13:07 | FromDiscord | <Elegantbeef> probably `getCurrentDir` |
04:14:18 | FromDiscord | <devlop_gaming> No that get's the directory of where the executable runs |
04:14:31 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "Bruh i'm literally looking": to use critical thinking and reasoning skills? :p |
04:14:38 | FromDiscord | <Elegantbeef> Heh |
04:15:39 | FromDiscord | <Robyn [She/Her]> i am trying to think of what to say without sounding mean |
04:15:54 | FromDiscord | <devlop_gaming> What? |
04:16:21 | FromDiscord | <Robyn [She/Her]> I'm just tired so i don't wanna sound like I'm being a cunt when saying something blunt, like by overexplaining |
04:18:44 | FromDiscord | <Elegantbeef> You either want `getCurrentDir` or you want `getAppDir` |
04:18:51 | FromDiscord | <Elegantbeef> Those are the only two options |
04:18:58 | FromDiscord | <Elegantbeef> Work your way from there |
04:20:06 | FromDiscord | <devlop_gaming> In reply to @Elegantbeef "You either want `getCurrentDir`": Doesn't both does the same thing? |
04:20:07 | FromDiscord | <Robyn [She/Her]> I recommend taking a look on how file paths work, via a YT video or something, if you aren't familar with them |
04:20:19 | FromDiscord | <that_dude.> sent a code paste, see https://play.nim-lang.org/#pasty=XtztLucp |
04:20:24 | FromDiscord | <devlop_gaming> Bruh ik how file paths work |
04:20:28 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "Doesn't both does the": i explained it earlier |
04:20:32 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "Bruh ik how file": man are you sure |
04:20:33 | FromDiscord | <that_dude.> I think that's basically all the puzzle pieces |
04:20:55 | FromDiscord | <Robyn [She/Her]> because to me, i am genuinely so confused on what problem you're having |
04:21:42 | FromDiscord | <that_dude.> I'm convinced that he just isn't looking things up. I mentioned that fmt string has a gotcha and that he should make sure it isn't an issue, but didn't remember what it was and was expecting me to look it up for him |
04:21:56 | FromDiscord | <Robyn [She/Her]> lovely |
04:25:45 | FromDiscord | <devlop_gaming> In reply to @that_dude. "I'm convinced that he": Omfg i'm tired of people assuming i don't look shit up. Ya'll make it hard to be nice sometimes. |
04:27:12 | FromDiscord | <that_dude.> It could just be one of those unteachable things that we're used to, but idk how else I can help you without just doing your work for you |
04:27:58 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "Omfg i'm tired of": do people assume that a lot? |
04:28:59 | FromDiscord | <that_dude.> Like afaik, all the pieces are there now in the links I posted, but _you_ need to understand how to put the together because imo this is fundamental stuff you need to be good at. |
04:29:33 | FromDiscord | <that_dude.> And I don't see what the disconnect is because I've done this stuff so many times that it's easy to me |
04:29:52 | FromDiscord | <threefour> In reply to @devlop_gaming "Omfg i'm tired of": You're the first person I've seen here that requires this much follow-up for trivial tasks. That indicates to me that you're not doing what everyone else is doing to avoid that, which is RTFMing. |
04:29:53 | FromDiscord | <that_dude.> Do you think you could articulate what part you don't understand? |
04:31:13 | FromDiscord | <devlop_gaming> In reply to @threefour "You're the first person": I literally did everything ya'll told me to |
04:32:11 | FromDiscord | <threefour> I don't say that just to be mean either. Projects are quicker when you use docs rather than waiting on responses. The docs are often semi scarce don't get me wrong, but not to this degree. |
04:33:34 | FromDiscord | <that_dude.> Most help conversations in this channel are either "How does x work" or "is there a way to do x -> have you looked at y?" and most people can extrapolate from there. Things Nim does isn't that different from all other programming languages. |
04:34:42 | FromDiscord | <that_dude.> In that sense, if you know the signature of a function and have read the docs on what it does, it should be easy to chain them together in a programatic way |
04:34:50 | FromDiscord | <devlop_gaming> In reply to @threefour "I don't say that": What you think i do all day stare at the ceiling??? |
04:35:35 | FromDiscord | <devlop_gaming> In reply to @that_dude. "Most help conversations in": Yea maybe bc i rlly don't understand the information i get off the docs sometimes |
04:38:17 | FromDiscord | <that_dude.> Every link I gave you https://discord.com/channels/371759389889003530/371759389889003532/1363731049036779701 has the function signature (proc name, arguments + type, return type), a description of what it does, and two of them have MANY examples to reference. And if the examples don't convince you, you can make a `test.nim` file and see what they do there. |
04:45:52 | FromDiscord | <kapendev> Giving just links is not really helpful |
04:46:18 | FromDiscord | <that_dude.> Why not? |
04:46:58 | FromDiscord | <kapendev> Because that was already available to him. Why do you think he is asking here? |
04:47:22 | FromDiscord | <that_dude.> Because I'm not convinced that he used what was available. We already tried to help him a bunch |
04:48:00 | FromDiscord | <kapendev> This is not school, we don't have homework |
04:48:04 | FromDiscord | <that_dude.> If he didn't understand how to read the docs and had a question about it, I could have helped him with that. But he was asking questions that the docs answer imo |
04:48:36 | FromDiscord | <that_dude.> Which also means you don't have a tutor or teacher. It's up to you to look up and learn what you need to know on your own. |
04:48:50 | FromDiscord | <threefour> In reply to @kapendev "This is not school,": We're not paid per question either |
04:49:13 | FromDiscord | <that_dude.> I'm trying to help in good faith. And that means that if he wants help, that should mean he's invested enough to try to learn something |
04:49:31 | FromDiscord | <that_dude.> If he's not here to learn a niche language, then why bother with a niche language |
04:49:31 | FromDiscord | <kapendev> You could just not answer instead of being nerds and saying that he should read better 😉 |
04:49:43 | FromDiscord | <that_dude.> What should I have done instead? |
04:50:03 | FromDiscord | <that_dude.> I have asked him for specific problems on what I've provided |
04:50:08 | FromDiscord | <Robyn [She/Her]> the issue is that basic path manipulation is somehow a challenge↵(@kapendev) |
04:50:49 | FromDiscord | <that_dude.> (edit) "I have asked him for specific problems on what ... I've" added "he doesn't understand from what" |
04:51:12 | FromDiscord | <Robyn [She/Her]> That's the problem, if they genuinely cannot grasp that, they need to read up on it since as that\_dude has said, it's something so intuitive to us that we can't explain well |
04:51:27 | FromDiscord | <Laylie> in a language where resources outside of the official documentation is scarce, it is valid to point to lack of documentation-reading skill as a source of difficulty |
04:51:37 | FromDiscord | <devlop_gaming> Look i'm not always gonna understand eveything in the docs. Some things i did understand and some i didn't. |
04:52:20 | FromDiscord | <that_dude.> which is fair, but if you didn't mention a single part of the docs that confused you. The most you came in here with was "There is an error <paste>". |
04:52:25 | FromDiscord | <devlop_gaming> While searching just now i found something called nimassets which allows you to bundle your assets with your executable |
04:53:49 | FromDiscord | <that_dude.> In reply to @Laylie "in a language where": I also used to have issues with that. I didn't know where to look and how to use stuff. But Imo Nim's Strongly typed system makes it pretty easy to use. The hardest part is figuring out if a function already exists for what you want to do, and what it's called |
04:58:50 | FromDiscord | <lainlaylie> was the undeclared routine error resolved? |
04:58:53 | FromDiscord | <lainlaylie> https://media.discordapp.net/attachments/371759389889003532/1363740755532972142/image.png?ex=6807220d&is=6805d08d&hm=432c269fdd57801e06fdd476198e430b0dbc995e012861e3996ebf42b962e66a& |
04:59:12 | FromDiscord | <devlop_gaming> Nope |
05:01:19 | FromDiscord | <lainlaylie> the first `"` in `Path(".")` is closing the string, so the compiler tries to call `.`, which doesn't exist |
05:01:48 | FromDiscord | <devlop_gaming> Huh? |
05:01:58 | FromDiscord | <lainlaylie> strings in nim are delimited by `"` |
05:02:12 | FromDiscord | <lainlaylie> a `"` starts a string literal, and a matching `"` ends it |
05:02:22 | FromDiscord | <lainlaylie> there is a `"` in `Path(".")` |
05:03:24 | FromDiscord | <devlop_gaming> Wait Path takes a string? |
05:03:56 | FromDiscord | <lainlaylie> the fact that it's Path is not relevant, you could put any expression that contains `"` in its place and you would get the same error |
05:05:30 | FromDiscord | <devlop_gaming> Someone told me to do that so that's what i did 🤷♂️ |
05:05:46 | FromDiscord | <lainlaylie> you need to combine what people tell you to do with your own knowledge |
05:06:57 | FromDiscord | <lainlaylie> now that you understand the problem, the solution should be obvious |
05:07:36 | FromDiscord | <devlop_gaming> Nothing is ever obvious to me |
05:08:01 | FromDiscord | <that_dude.> That's how you learn |
05:08:06 | FromDiscord | <that_dude.> It gets easier as you go |
05:08:21 | FromDiscord | <devlop_gaming> Yea that's how i got to this point |
05:10:38 | FromDiscord | <lainlaylie> your goal is to use the value `Path(".")` inside a `fmt"..."` (which is, of course, a generalized raw string literal). you need to find a way to do so without the `"` closing the string at the wrong place |
05:12:57 | FromDiscord | <lainlaylie> some ideas to think about:↵ is it possible to refer to values without typing out their literal representation every time?↵ is it possible to signal to the parser that the `"` is part of the string, not its closing delimiter? |
05:18:32 | FromDiscord | <lainlaylie> just noticed someone already sent the solution earlier |
05:20:47 | FromDiscord | <devlop_gaming> Ok so i decided to test my project as a single executable and noticed what i'm doing is pointless |
05:22:05 | FromDiscord | <devlop_gaming> Either way it still requires the assets to be present so now the question is how can i bundle it with my executable |
05:22:56 | FromDiscord | <that_dude.> Now that can be formatted as a nice question |
05:22:57 | FromDiscord | <that_dude.> https://github.com/xmonader/nimassets |
05:23:23 | FromDiscord | <that_dude.> "Does x exist? -> yes it's called y" |
05:25:37 | FromDiscord | <that_dude.> Also https://forum.nim-lang.org/t/3608 |
05:26:05 | FromDiscord | <that_dude.> https://nim-lang.org/docs/system.html#staticRead%2Cstring |
05:26:19 | FromDiscord | <that_dude.> This is probably worth looking into |
05:26:32 | FromDiscord | <Laylie> yeah, that + TTF\_OpenFontIO is what i was thinking, but maybe the game people have other ideas |
05:26:35 | FromDiscord | <enthus1ast.> In reply to @lainlaylie "": Uahh that gives eye cancer |
05:26:41 | FromDiscord | <enthus1ast.> 😉 |
05:26:50 | FromDiscord | <lainlaylie> lol what about it? the colors? |
05:27:21 | FromDiscord | <that_dude.> That's not even that bad lol. I accidentally opened the 1.4.4 Nim docs and found out that that version didn't have dark mode |
05:27:28 | FromDiscord | <that_dude.> Blinded me for a sec |
05:28:05 | FromDiscord | <enthus1ast.> The lengths, the backslash, the casting... |
05:28:25 | FromDiscord | <lainlaylie> oh yeah, the code is verbatim from someone else |
05:28:45 | FromDiscord | <enthus1ast.> I do not see colors currently, my mobile is still on bedtime mode 🙂 |
05:29:33 | FromDiscord | <enthus1ast.> There is "/" proc from ospaths |
05:29:39 | FromDiscord | <lainlaylie> indeed |
05:29:48 | FromDiscord | <that_dude.> Yep |
05:29:56 | FromDiscord | <enthus1ast.> And getAppDir() |
05:30:02 | FromDiscord | <lainlaylie> i wanted to help them solve the immediate problem before inundating them with alternatives |
05:30:15 | FromDiscord | <enthus1ast.> Yes understood 😃 |
05:30:46 | FromDiscord | <devlop_gaming> Wish I knew I was doing this for nothing then i could have found nimassets sooner |
05:31:29 | FromDiscord | <that_dude.> I don't think you're doing this for nothing, you still need to know how to find stuff on your system. |
05:31:29 | FromDiscord | <enthus1ast.> I would not bother too much with cramping all assets inside the exe |
05:32:10 | FromDiscord | <devlop_gaming> I want it to be a single executable tho |
05:32:12 | FromDiscord | <enthus1ast.> Just put all into a folder and zip it, or create an installer |
05:32:48 | FromDiscord | <that_dude.> Tbh I think this is a fine endevour because he should learn a decent amount in trying it |
05:33:14 | FromDiscord | <enthus1ast.> Or load the assets from a const directly into memory (if sdl supports this) |
05:33:18 | FromDiscord | <devlop_gaming> Plus i have my reasons for doing so |
05:33:30 | FromDiscord | <devlop_gaming> In reply to @enthus1ast. "Or load the assets": That's possible? |
05:33:48 | FromDiscord | <enthus1ast.> Idk look if sdl can load from am adress |
05:34:42 | FromDiscord | <lainlaylie> TTF_OpenFontIO innit |
05:35:36 | FromDiscord | <enthus1ast.> If you use nimassets it will unpack/extract the assets in the calling folder, I would hate you (a little bit) if you do this to my folder |
05:35:46 | FromDiscord | <enthus1ast.> In the current folder |
05:36:12 | FromDiscord | <devlop_gaming> Wait so it doesn't keep it in the executable? |
05:36:27 | FromDiscord | <enthus1ast.> Afaik no |
05:36:59 | FromDiscord | <enthus1ast.> But have not used it in a long time |
05:37:48 | FromDiscord | <enthus1ast.> So you must use the load from memory functions for every asset, you gonna use |
05:38:09 | FromDiscord | <enthus1ast.> https://media.discordapp.net/attachments/371759389889003532/1363750634096038018/voice-message.ogg?ex=68072b40&is=6805d9c0&hm=7ea360e4b99bb5b1a8f802775d042bad973d9f975f2774efac01fffe23b4370f& |
05:39:30 | FromDiscord | <devlop_gaming> Wait if you just said the assets get unpacked into the calling folder then what's the point in using it? |
05:40:58 | FromDiscord | <enthus1ast.> It's for the lazy ones that do not want to do an Installer 😉 |
05:41:54 | FromDiscord | <devlop_gaming> That means the package is existing just to exist |
05:42:44 | FromDiscord | <that_dude.> It sounds like it lets you distribute an exe to your users without them needing to worry about setting up any nearby files the program needs |
05:43:31 | FromDiscord | <devlop_gaming> Wym by setting up? |
05:43:57 | FromDiscord | <that_dude.> You can have them download an exe to run instead of a zip file with an exe and other files |
05:44:09 | FromDiscord | <that_dude.> Slightly nicer first time run presentation |
05:47:31 | FromDiscord | <devlop_gaming> That just sound like a job an installer can do |
05:48:16 | FromDiscord | <devlop_gaming> I'm still wondering how to bundle assets into a single executable like how godot did |
05:50:05 | FromDiscord | <demotomohiro> If you bundle 1 giga bytes of game asset files to single executable somehow, doesn't it always use 1 GB of memory to place all content of the executable file?↵If you don't bundle game asset files, your game only use memory for loaded game assets and don't use much memory unless it loads all game asset files at the same time. |
05:53:02 | FromDiscord | <devlop_gaming> Ok so tell me this how does godot package it's content(assets included) into a single executable |
05:53:46 | FromDiscord | <that_dude.> Just wondering, why would you expect us to know something like that? |
05:54:10 | FromDiscord | <that_dude.> That's a really specific question |
05:54:39 | FromDiscord | <Elegantbeef> Hey I know the answer 😄 |
05:54:42 | FromDiscord | <that_dude.> Aren't you curious enough to try to look it up on your own? |
05:54:47 | FromDiscord | <that_dude.> Ey beef you can't do this to me! |
05:54:59 | FromDiscord | <that_dude.> You know too much |
05:55:11 | FromDiscord | <Elegantbeef> I can too, eh |
05:55:11 | FromDiscord | <that_dude.> Like a fucking encyclopedia lol |
05:56:22 | FromDiscord | <that_dude.> DevLop, I'm just trying to say that you shouldn't expect us to know these things. Most things you need to be curious enough about on your own to research them |
05:56:24 | FromDiscord | <devlop_gaming> In reply to @that_dude. "That's a really specific": Needed something for an example |
05:57:21 | FromDiscord | <devlop_gaming> In reply to @that_dude. "DevLop, I'm just trying": You should also know information like this isn't gonna be on the internet |
05:58:41 | FromDiscord | <that_dude.> Then how would you expect us to have learned about it? |
05:59:03 | FromDiscord | <devlop_gaming> 🤷♂️ |
05:59:30 | FromDiscord | <devlop_gaming> Ik information on its build system exists for sure and i think for its nodes as well |
06:00:47 | FromDiscord | <that_dude.> For what demo said, I could say the same thing "Assets must be stored somewhere -> put all in exe (ram) or put all on disk and fetch as needed". But for what you asked, "What mechanism does Godot specifically use to embed things?" Which I think is fair to argue that the Nim community doesn't really care to figure out for this niche |
06:00:59 | FromDiscord | <that_dude.> (edit) "For what demo said, I could say the same thing ... "Assets" added "as it's kinda logical" |
06:01:55 | FromDiscord | <devlop_gaming> Didn't ask you to |
06:02:06 | FromDiscord | <demotomohiro> Can you tell me why you need to bundle libraries and game assets to single executable file?↵Just put them on directories and zip them doesn't work? |
06:04:13 | FromDiscord | <devlop_gaming> In reply to @demotomohiro "Can you tell me": Bc I just want a single executable and plus you won't have to worry about accidentally deleting stuff |
06:04:16 | FromDiscord | <Elegantbeef> Cause 1 file = gooder |
06:04:23 | FromDiscord | <devlop_gaming> ? |
06:04:34 | FromDiscord | <devlop_gaming> Gooder isn't even correct English |
06:04:44 | FromDiscord | <devlop_gaming> And it's not a word |
06:04:54 | FromDiscord | <Elegantbeef> Damn you got me |
06:05:01 | FromDiscord | <Elegantbeef> So they say |
06:06:07 | FromDiscord | <enthus1ast.> Godot Just zips them and puts them next to the exe |
06:06:35 | FromDiscord | <enthus1ast.> And the answer is: static read them into your exe and load them from address |
06:07:00 | FromDiscord | <Elegantbeef> Well the real answer is to use portable executables, but yes |
06:07:54 | FromDiscord | <demotomohiro> In reply to @devlop_gaming "Bc I just want": There are many softwares that ships with mutiple files.↵If you need to care about accidentally deleting stuff, you can also accidentally delete important files and make many problems. |
06:08:26 | FromDiscord | <Elegantbeef> If you think about it a single file means you're more likely to delete everything if you accidentally delete things |
06:08:27 | FromDiscord | <devlop_gaming> In reply to @demotomohiro "There are many softwares": That's why games such as osu have a repair tool |
06:08:31 | FromDiscord | <that_dude.> In reply to @enthus1ast. "And the answer is:": https://discord.com/channels/371759389889003530/371759389889003532/1363747598741016606 I agree, that's probably the easiest solution to just do. |
06:08:47 | FromDiscord | <that_dude.> Is your game supposed to be modable? |
06:10:01 | FromDiscord | <devlop_gaming> In reply to @Elegantbeef "If you think about": Well not rlly. For what I'm doing my application relies on a directory located in AppData. Long as that exists people can delete the executable anytime. |
06:10:08 | FromDiscord | <devlop_gaming> In reply to @that_dude. "Is your game supposed": Also not making a game |
06:11:05 | FromDiscord | <devlop_gaming> Mb i meant located in the user folder |
06:16:24 | FromDiscord | <lainlaylie> can confirm, it was easy https://media.discordapp.net/attachments/371759389889003532/1363760260346544259/image.png?ex=68073437&is=6805e2b7&hm=50aab1329ac8faed0aff026602d38a04787a6ef95ae07dde19fe3f64d26deee6& |
06:17:50 | FromDiscord | <demotomohiro> In reply to @devlop_gaming "Bc I just want": When you develop game, you probably cannot always keep game asset files in single executable.↵How can drawing/music/3D model softwares can read and write files inside executable file?↵You can manage libraries or asset files using git or other version systems.↵When you ship your game, your game can show errors when asset files are missing and ask user to reinstall. |
06:19:11 | FromDiscord | <devlop_gaming> In reply to @demotomohiro "When you develop game,": If I was developing a game i wouldn't have asked💀 |
07:05:37 | FromDiscord | <nnsee> In reply to @devlop_gaming "Ok so tell me": this was only possible in godot 2. godot 3 ditched this and assets are always separate. turns out bundling assets into the exe isn't generally a good idea |
07:05:47 | FromDiscord | <nnsee> what problem exactly are you trying to solve? |
07:19:21 | * | delvarus joined #nim |
07:20:14 | * | andy-turner joined #nim |
07:22:43 | FromDiscord | <devlop_gaming> In reply to @nnsee "this was only possible": I'm using godot 4 and it's just a single executable 🤔 |
07:23:04 | FromDiscord | <devlop_gaming> Tho I can imagine why |
07:23:38 | FromDiscord | <devlop_gaming> That's probably why some games need to download content first |
08:08:02 | FromDiscord | <tomo_kimpesa> In reply to @demotomohiro "When you develop game,": Other than concatenating an asset archive, another way I could think of is converting assets to binaries and load them as resources (inline).↵Massive bloat though, I don't see the point of this instead of just having an installer expose an entry point and it hide all the fluff. |
08:15:32 | FromDiscord | <nnsee> In reply to @devlop_gaming "I'm using godot 4": it's possible that godot 4 reintroduced that |
08:15:36 | FromDiscord | <nnsee> i just know it wasn't possible in 3 |
09:01:16 | * | amadaluzia joined #nim |
09:28:28 | * | delvarus quit (Quit: Leaving) |
09:49:46 | * | amadaluzia_ joined #nim |
09:53:07 | * | andy-turner quit (Quit: Leaving) |
10:29:00 | * | xet7 joined #nim |
10:37:01 | * | delvarus joined #nim |
10:47:49 | * | andy-turner joined #nim |
10:57:14 | * | andy-turner quit (Quit: Leaving) |
11:44:21 | * | alexdaguy joined #nim |
12:44:31 | * | beholders_eye joined #nim |
13:24:45 | FromDiscord | <Robyn [She/Her]> hey beef what do you think about making a game that runs on a WASM VM |
13:25:24 | FromDiscord | <Robyn [She/Her]> like you have a runner for your game which is native code, then the game itself is just in WASM |
13:44:30 | FromDiscord | <kapendev> In reply to @nnsee "this was only possible": You can do it in Godot 3 too |
13:45:04 | FromDiscord | <nnsee> shrug, wasn't possible when i was tinkering with it |
13:45:14 | FromDiscord | <nnsee> maybe they've re-added that now |
14:02:23 | * | thunder joined #nim |
14:07:08 | FromDiscord | <kapendev> In reply to @battery.acid.bubblegum "hey beef what do": It's called WASM4. |
14:09:46 | * | amadaluzia_ quit (Quit: Hi, this is Paul Allen. I'm being called away to London for a few days. Meredith, I'll call you when I get back. Hasta la vista, baby.) |
14:43:09 | FromDiscord | <Robyn [She/Her]> that's for pixel games↵(@kapendev) |
14:43:15 | FromDiscord | <Robyn [She/Her]> I'd want a runtime that allows for patching the game at startup, for modding and such |
14:43:22 | FromDiscord | <Robyn [She/Her]> and it's made simple deliberately |
14:46:15 | FromDiscord | <Robyn [She/Her]> bridge sent messages out of order |
14:46:20 | FromDiscord | <kapendev> I think WASM is more trouble than it's worth for gamedev. |
14:46:23 | FromDiscord | <Robyn [She/Her]> In reply to @Robyn "I'd want a runtime": this was the last msg i sent |
14:46:32 | FromDiscord | <Robyn [She/Her]> In reply to @kapendev "I think WASM is": why's that? |
14:47:01 | * | xtr00 quit (Read error: Connection reset by peer) |
14:47:32 | FromDiscord | <kapendev> Because it's more work than doing dll stuff. |
14:48:28 | FromDiscord | <leorize> wasm is over hyped tbh |
14:49:29 | FromDiscord | <threefour> Does it have access to DOM yet? |
14:49:48 | FromDiscord | <leorize> that's probably never in scope |
14:50:28 | FromDiscord | <Ras 🫐> i think the attractive part of it is being able to run games in the browser with relatively okay performance↵(@kapendev) |
14:55:06 | FromDiscord | <Robyn [She/Her]> i like it tho ;-; platform independent target which can be ran p much anywhere |
14:55:22 | FromDiscord | <kapendev> In reply to @Ras 🫐 "i think the attractive": That's ok. |
14:56:13 | FromDiscord | <leorize> so is JVM |
14:56:28 | FromDiscord | <Robyn [She/Her]> i saw that Leo |
14:56:29 | FromDiscord | <Robyn [She/Her]> Can't target the JVM with Rust and such |
14:56:35 | FromDiscord | <Robyn [She/Her]> "so is the JVM" |
14:57:41 | FromDiscord | <leorize> huh, I thought my server stalled and the messages never got sent |
14:57:54 | FromDiscord | <Robyn [She/Her]> Not really imo, you get much easier access to tools that can modify the game's code, which seems easier than modding the binary which could run on various different platforms↵(@kapendev) |
14:59:27 | FromDiscord | <leorize> if you want wasm + game engine you gotta make one |
14:59:31 | FromDiscord | <Robyn [She/Her]> If the game runs in an interpreter or runtime like the JVM, not really a problem, but look at the MC bedrock edition server software, they were relying on the pdb files released by Mojang for modding it, but then they stopped releasing it and now a lot more info is gonna have to go into it |
14:59:38 | FromDiscord | <Robyn [She/Her]> I am aware 😔 |
14:59:39 | FromDiscord | <leorize> I don't think any of the standard runtimes do graphics |
15:00:49 | FromDiscord | <leorize> not really, hyper optimized wasm is about as hard to mod as native code |
15:01:12 | FromDiscord | <Robyn [She/Her]> But once the effort is done, it can be applied to multiple platforms |
15:01:15 | FromDiscord | <Robyn [She/Her]> Could use wgpu-native to expose rendering to the WASM runtime |
15:01:33 | FromDiscord | <Robyn [She/Her]> But your point is right \:p |
15:03:16 | * | xtr00 joined #nim |
15:03:54 | FromDiscord | <leorize> at that point you have to question whether its easier to have your engine use an established system like lua (used by pretty much everyone), or wren or whatever |
15:11:35 | FromDiscord | <devlop_gaming> In reply to @Ras 🫐 "i think the attractive": Browser games are doo doo |
15:13:22 | FromDiscord | <leorize> CrossCode is a "browser" game and it's pretty good |
15:13:48 | FromDiscord | <leorize> you'd never notice that it's JS in regular play |
15:13:51 | FromDiscord | <leorize> runs great on a potato |
15:13:53 | FromDiscord | <devlop_gaming> I didn't mean browser games content are doo doo I was talking about performance |
15:14:30 | FromDiscord | <devlop_gaming> Idek how you even get bad performance in the browser💀 |
15:31:34 | * | amadaluzia quit (Ping timeout: 252 seconds) |
15:31:53 | * | amadaluzia joined #nim |
15:35:35 | * | alexdaguy quit (Ping timeout: 252 seconds) |
15:39:45 | * | amadaluzia quit (Remote host closed the connection) |
15:47:53 | FromDiscord | <Elegantbeef> I've thought about it↵(@Robyn [She/Her]) |
15:48:35 | FromDiscord | <nnsee> In reply to @devlop_gaming "I didn't mean browser": i mean that's exactly one of the things wasm aims to solve |
15:48:50 | FromDiscord | <nnsee> and the performance isn't necessarily bad |
15:49:03 | FromDiscord | <nnsee> quakejs runs really well for example http://www.quakejs.com/ |
15:50:35 | FromDiscord | <Elegantbeef> A jit'd wasm runtime could be quite fast. Using `wasm` for mods is a thing I've wanted to do for a bit, but I've not got to making a project that'd benefit it |
15:50:54 | FromDiscord | <fabric.input_output> embedding a runtime for logic and control isn't uncommon afaik |
15:51:53 | FromDiscord | <devlop_gaming> In reply to @nnsee "quakejs runs really well": Some browser games aren't very well performant especially for weaker devices |
15:52:16 | FromDiscord | <devlop_gaming> Big examples rhythm plus and zomb royale |
15:53:44 | FromDiscord | <nnsee> In reply to @devlop_gaming "Some browser games aren't": you're missing the point |
15:54:04 | FromDiscord | <nnsee> they're not slow because they're browser games, they're slow because they're built on technologies not meant for games |
16:12:48 | FromDiscord | <devlop_gaming> So isn't python or ruby but you see people made it work |
16:14:06 | * | void09 quit (Ping timeout: 252 seconds) |
16:16:11 | FromDiscord | <Robyn [She/Her]> In reply to @Elegantbeef "A jit'd wasm runtime": same rip, also wasmtime as the runtime would be plenty fast |
16:17:13 | FromDiscord | <Robyn [She/Her]> In reply to @devlop_gaming "So isn't python or": it all comes down to optimisation, poorly written code in a language like C/Nim/Zig/etc, can be slower than a half-decent implementation in Python or Ruby or whatever |
16:17:50 | * | void09 joined #nim |
16:18:15 | FromDiscord | <leorize> in fact not being aware of implementation differences is probably one of the biggest contributors to "nim is slower than python" posts |
16:18:47 | FromDiscord | <Elegantbeef> That and `-d:release` 😄 |
16:55:22 | FromDiscord | <devlop_gaming> What does that do again? I seen that somewhere but I forgot what it does. |
17:09:11 | * | amadaluzia joined #nim |
17:15:13 | FromDiscord | <Phil (he/him)> -d\:release compiles with optimization flags. Which brings roughly a 10x speed-up |
17:42:04 | * | ntat joined #nim |
18:01:29 | * | delvarus quit (Ping timeout: 268 seconds) |
18:17:39 | * | ntat quit (Quit: leaving) |
19:21:37 | FromDiscord | <devlop_gaming> So i wouldn't need to worry if my program is a little slow? |
19:36:40 | FromDiscord | <Phil> sent a long message, see https://pasty.ee/ZHYoedNL |
20:04:33 | * | amadaluzia quit (Read error: Connection reset by peer) |
20:04:56 | * | amadaluzia joined #nim |
20:17:28 | * | amadaluzia quit (Ping timeout: 272 seconds) |
20:22:33 | FromDiscord | <devlop_gaming> In reply to @isofruit "Define "little slow". In": Would there even be a noticeable performance difference without -d:release between test builds versus final builds? |
20:23:31 | FromDiscord | <Phil> In reply to @devlop_gaming "Would there even be": When I write 10x I mean that.↵For me it was when I compiled my webserver.↵Loading times went from python-like speeds around >200ms to like... 2ms |
20:23:39 | FromDiscord | <Phil> (edit) "2ms" => "2-30ms" |
20:23:51 | FromDiscord | <Phil> And that one you definitely notice |
20:26:23 | FromDiscord | <devlop_gaming> So my engine could potentially be faster than godot and unity? |
20:27:26 | FromDiscord | <Phil> Maybe?I don't know what your engine does, but if you're not compiling with -d:release your kneecapping yourself (in your case -d:danger may also be a valid choice, I'll let gamedevs decide on that one, that one is not my field) |
20:27:45 | FromDiscord | <kapendev> In reply to @devlop_gaming "So my engine could": Easily. Godot is poopoo slow. |
20:28:24 | FromDiscord | <devlop_gaming> In reply to @kapendev "Easily. Godot is poopoo": I forgot what i did but there is a setting i messed with that made my project faster when i was messing with godot |
20:28:50 | FromDiscord | <devlop_gaming> Tho the engine itself is still a bit laggy |
20:28:52 | FromDiscord | <Phil> The kinds of tasks where I'd consider compiling without -d:release valid is when you're just playing around or processing tiny pieces of work where you really do not care |
20:29:19 | FromDiscord | <Phil> by tiny pieces of work I mean stuff like reading in/writing/editing like a txt file with less than 1000 lines of text |
20:29:50 | FromDiscord | <devlop_gaming> I was thinking about skipping that part with reason |
20:30:31 | FromDiscord | <Phil> Once you're past that, always compile with at least -d:release when you're building a binary for final use.↵-d:lto (link time optimization) is also basically free performance, but that one only improves things by a couple percent or so but double the build-time |
20:30:56 | FromDiscord | <Phil> (edit) "double" => "doubles" | "build-time" => "time it takes to compile" |
20:31:31 | FromDiscord | <devlop_gaming> I see |
20:51:05 | * | beholders_eye quit (Ping timeout: 265 seconds) |
20:59:57 | * | nyeaa49284230101 joined #nim |
21:01:29 | * | skippy8 joined #nim |
21:05:47 | FromDiscord | <nnsee> In reply to @devlop_gaming "So my engine could": both godot and unity are both far more bloated but also far more micro-optimized than your engine will be. so it all depends |
21:06:11 | FromDiscord | <nnsee> but since your engine will be purpose built for specific games, then... maybe? |
21:14:54 | FromDiscord | <DetermiedNim1> are there ways to interface with rust other than nbindgen |
21:15:31 | FromDiscord | <DetermiedNim1> oh well |
21:15:32 | FromDiscord | <leorize> just do it yourself? |
21:15:45 | FromDiscord | <leorize> write rust -\> C ffi |
21:15:45 | FromDiscord | <leorize> then write C -\> nim ffi |
21:16:04 | FromDiscord | <DetermiedNim1> yeah I just looked up rust's ffi |
21:24:24 | FromDiscord | <dawidek.2137> LSP dying on me all the time is the is a problem |
21:24:37 | FromDiscord | <dawidek.2137> is this still like this for other people? |
21:39:39 | FromDiscord | <threefour> I don't have an issue with it dying, but it's painfully slow in Emacs (but VS Code 🤷♂️) to the point where I stopped using LSP for Nim altogether, and now just rawdog it. Not that bad with docs open. |
21:39:49 | FromDiscord | <threefour> (edit) "I don't have an issue with it dying, but it's painfully slow in Emacs (but ... VS" added "not" |
21:57:09 | * | xet7 quit (Quit: Leaving) |
21:57:51 | * | thunder quit (Quit: Leaving) |
22:15:15 | * | amadaluzia joined #nim |
22:15:33 | * | skippy8 quit (Quit: WeeChat 4.4.2) |
22:15:59 | * | skippy8 joined #nim |
22:35:19 | FromDiscord | <tauruuuuuus> In reply to @dawidek.2137 "is this still like": like I said multiple times on the forum, I got fed up and switched to clion nim's plugin, it's been pretty nice |
22:38:34 | FromDiscord | <tauruuuuuus> code navigation is there (needs just a `nimble setup`), code suggestions are there too, and step-by-step debugging is integrated too |
22:40:47 | FromDiscord | <tauruuuuuus> sent a code paste, see https://play.nim-lang.org/#pasty=NnQdkvqe |
22:44:04 | * | skippy8 quit (Quit: WeeChat 4.4.2) |
23:01:27 | FromDiscord | <devlop_gaming> In reply to @nnsee "both godot and unity": "Micro optimized" yet unity can't even run on weak devices while godot can sorta run smoothly on weak devices |
23:03:25 | FromDiscord | <nnsee> In reply to @devlop_gaming ""Micro optimized" yet unity": er what? |
23:03:48 | FromDiscord | <nnsee> there are many, many games built on unity that run perfectly fine on "weak" devices |
23:03:53 | FromDiscord | <devlop_gaming> See the goal here is to get my engine as optimized as possible. Kinda have to because one of my computers can run nothing with the application nearly crashing. |
23:04:04 | FromDiscord | <devlop_gaming> In reply to @nnsee "there are many, many": I'm talking about the engine itself |
23:04:38 | FromDiscord | <devlop_gaming> Ik unity games run fine. Adofai is one of them that runs with no signs of lag somehow. |
23:04:56 | FromDiscord | <nnsee> so i don't understand your point? |
23:06:17 | FromDiscord | <devlop_gaming> Some engines doesn't run well on weak devices |
23:06:41 | FromDiscord | <devlop_gaming> One time I tried to use unity and was faced with crashes and constant lag |
23:07:45 | FromDiscord | <nnsee> In reply to @devlop_gaming ""Micro optimized" yet unity": "can't run on weak devices" yet games made using unity are praised as _the_ pinnacle on low-end devices, cuphead and hollow knight immediate coming to mind |
23:07:56 | FromDiscord | <nnsee> (edit) "immediate" => "immediately" |
23:09:22 | FromDiscord | <devlop_gaming> In reply to @nnsee ""can't run on weak": Never played cuphead or hollow knight |
23:09:41 | FromDiscord | <nnsee> er okay |
23:09:48 | FromDiscord | <nnsee> doesn't really change the facts |
23:10:30 | FromDiscord | <devlop_gaming> Again I weren't referring to the games made with the engines |
23:11:04 | FromDiscord | <nnsee> not really sure what else you could be referring to |
23:11:37 | FromDiscord | <devlop_gaming> The engines themselves |