00:04:42 | FromGitter | <Varriount> ldlework: But it's so safe *and* performant! I mean, it's not like there are any other languages that are safe and performant! ;P |
00:05:41 | zachcarter | A rust user got mad at me in irc a few months ago when I started using Nim |
00:05:51 | FromGitter | <Varriount> Surely a unintuitive syntax is a small price to pay for such unique features. |
00:06:18 | zachcarter | I was espousing nim in a roguelike dev chat |
00:06:23 | zachcarter | irc channel I mean |
00:06:58 | zachcarter | and he got all salty and was like “I don’t feel like I’ve wasted any time that I’ve spent over the past year and a half learning Rust” |
00:07:51 | zachcarter | yeah Rust is not a fun language to write code in |
00:08:04 | zachcarter | feels very rusty, lots of friction |
00:08:08 | zachcarter | aptly named |
00:08:44 | FromGitter | <Varriount> I won't claim that Nim does parallelism as well as Rust, or that it's *as* safe. |
00:09:28 | FromGitter | <Varriount> But the level of safety is sufficient for most applications, and the parallelism is improving. |
00:09:55 | zachcarter | one language I am interested in taking a look at once it matures a bit is pony |
00:11:26 | krux02 | pony? I've never heared of that one |
00:11:46 | zachcarter | https://www.ponylang.org/learn/ |
00:12:03 | zachcarter | https://www.ponylang.org/discover/ |
00:12:04 | zachcarter | sorry |
00:12:06 | zachcarter | meant to link that |
00:14:12 | krux02 | well I got it googled |
00:14:24 | zachcarter | ah :P |
00:14:48 | krux02 | what is so interesting about it? |
00:15:28 | krux02 | I developed a lot in Scala, and it is amazing how much more fun it is to program when the friction is lowered |
00:15:49 | zachcarter | yeah I don’t think I would like it more than Nim |
00:16:14 | zachcarter | but it’s another safe object oriented language, so it’s on my radar, I don’t think I’ll ever get away from object oriented languages at work |
00:16:24 | krux02 | And I looked at rust, and it seems like all the functional programming patterns I used in Scala are covered, unlike Nim. The only reason I decided against Rust was the limited metaprogramming |
00:17:05 | krux02 | but now it is also that I am already invested in Nim and I actually do like it despite the things that do not work yet as I would like them to work |
00:17:20 | zachcarter | ^ |
00:18:11 | krux02 | I for my side am done with object oriented programming |
00:18:23 | zachcarter | I wish I could be |
00:19:15 | krux02 | if object oriented, then Scala |
00:20:37 | krux02 | slow compilation, a horrible build system (sbt), very high memory consumption, but an amazing language with a great type system |
00:21:30 | krux02 | then there is the jai programming language |
00:21:44 | krux02 | and maybe at some point in time I would like to do something in D |
00:21:48 | FromGitter | <Varriount> I like Nim because of static compilation + indentation syntax |
00:22:10 | krux02 | Varriount: why is indentation syntax so important to you? |
00:22:20 | krux02 | for me it was a reason I did not like Nim initially |
00:22:37 | FromGitter | <Varriount> My first programming language was Python, so preference. |
00:23:10 | FromGitter | <Varriount> Actually, I probably wouldn't have minded braces. It was the lack of forced semicolons that was attractive too. |
00:24:09 | FromGitter | <Varriount> "Hey, how about we require semicolons, because the circumstances where people want to merge two lines occurs *so* often!" |
00:24:58 | zachcarter | okay this is my lack of comp-sci background kicking in |
00:25:11 | zachcarter | but what do you refer to this type of construct as and is Nim ever going to get it? |
00:25:16 | krux02 | I like it, too, when the screen has little visual noise, and semicolons empty () and &operators everywhere are definitively a lot of visual noise |
00:25:17 | zachcarter | var a = b = 1 |
00:25:36 | FromGitter | <Varriount> zachcarter: Uh.. I don't know if it has a name. Nested assignment, maybe? |
00:25:54 | krux02 | well I do not like "var a = b = 1" at all. |
00:25:58 | FromGitter | <Varriount> zachcarter: Try `var a, b = 1` |
00:26:11 | zachcarter | I’m looking at code like : |
00:26:53 | zachcarter | sec trying to find some haha |
00:27:50 | krux02 | I think an assignment should not be an expression at the same time, an assignment should be a statement |
00:28:23 | zachcarter | https://github.com/SquidPony/SquidLib/blob/master/squidlib-util/src/main/java/squidpony/squidmath/PermutedRNG.java#L99 |
00:28:25 | zachcarter | something like that |
00:28:32 | * | arnetheduck joined #nim |
00:31:29 | FromGitter | <Varriount> Ugh, that's horrible. |
00:32:09 | FromGitter | <Varriount> zachcarter: assuming, 'a' and 'b' are already defined, I believe you can do that. |
00:32:27 | zachcarter | ah okay |
00:32:54 | krux02 | http://ix.io/qm7 |
00:33:26 | krux02 | Since I programmed Scala I try to use as little variables with state as possible |
00:33:38 | krux02 | it is much easier to give names to values that do not have state |
00:33:39 | zachcarter | yup |
00:33:47 | zachcarter | that’s why that code is like that I think |
00:33:56 | krux02 | then the meaning is much better defined, because it doesn't change |
00:34:18 | krux02 | I mean there is a state variable, I think that's ok |
00:34:27 | zachcarter | oh I see what you mean |
00:34:38 | krux02 | One shouldn't berequired to put that in monads |
00:34:46 | zachcarter | my ship generator for a 256x256 map is taking 0.306405 seconds |
00:34:49 | zachcarter | not bad |
00:34:51 | krux02 | and I like that it is called state |
00:35:12 | krux02 | what kind of ship? |
00:35:16 | krux02 | do you have a screenshot? |
00:36:07 | zachcarter | sure |
00:36:23 | zachcarter | although I’m not rendering it yet |
00:36:28 | zachcarter | just a minimap |
00:36:41 | zachcarter | let me find one I like :P |
00:36:45 | krux02 | is ok i like abstract graphics |
00:37:25 | krux02 | I played dwarf fortress :P |
00:39:00 | zachcarter | http://imgur.com/a/5iuTz |
00:39:20 | zachcarter | they’re very organic looking |
00:39:23 | zachcarter | and shouldn’t be that squished |
00:39:37 | zachcarter | I need to scale them down in the minimap image |
00:40:20 | krux02 | well I can't detect a lot, looks to me like ink on a folded paper |
00:40:40 | krux02 | :P |
00:40:42 | FromGitter | <Varriount> rorschach inkblot test |
00:40:56 | zachcarter | hehe yeah |
00:41:08 | zachcarter | they look better once they’re in game |
00:41:44 | krux02 | yea just add a lot of fancy filters :P |
00:42:22 | krux02 | some hdr, bloom, physically based rendering, fur simulation, and organic trees |
00:42:28 | zachcarter | ahahhaa |
00:42:45 | zachcarter | don’t know about all that but |
00:43:16 | FromGitter | <Varriount> don't forget dynamic texture generation |
00:43:22 | krux02 | well I know so much about 3D rendering that I think again, "yea a triangle how nice" |
00:43:41 | zachcarter | Varriount: I may do some of that |
00:43:51 | krux02 | multitexturing |
00:43:58 | zachcarter | I’ll probably be doing my world maps too in Nim |
00:44:12 | zachcarter | but I have a stupid amount of Java code to port first |
00:44:22 | * | ftsf joined #nim |
00:44:45 | zachcarter | okay I need to write this A* algo now |
00:45:12 | krux02 | and you think nim with its infancy of tools is still better than Java with these super advanced refactoring ides? |
00:45:55 | krux02 | yay A* who has never written at least something similar? |
00:46:47 | zachcarter | I think the JVM has the best set of IDEs |
00:46:51 | zachcarter | then VS Studio |
00:47:17 | zachcarter | you can spend 1 minute and a half watching them spin up too |
00:48:26 | krux02 | well I learned from Scalar, that a good language really makes up for an IDE |
00:50:11 | zachcarter | yeah |
00:50:30 | krux02 | Just as an example, in Java you let the IDE generate you getters and setters and you feel super amazing because you were able to use your IDE and let it do the work for you. And then you do Scala and you realize that you don't need the getters/setters in the first place |
00:50:59 | krux02 | I think Nim here is similar |
00:51:27 | krux02 | I can have a member foo, or a "getter" proc called foo |
00:52:16 | krux02 | But honestly I just wanna punch people whe teach about the importance of getters and setters |
00:55:58 | FromGitter | <Varriount> krux02: I'm automatically interested in any language I can easily write in *on* my phone. |
01:04:15 | * | rauss joined #nim |
01:04:41 | krux02 | Varriount: well I am pretty sure there is an app wher you can use your phone as a remote control with keyboard for you PC :P |
01:05:08 | krux02 | technically that is writing *on* your phone |
01:10:35 | FromGitter | <Varriount> krux02: Sure, but would the language still be friendly enough for that kind of typing? |
01:13:39 | ftsf | coding with T9 |
01:23:40 | FromGitter | <Varriount> Python, Nim, and maybe C are the three main languages I've been able to type on my phone. |
01:57:29 | * | chemist69 quit (Ping timeout: 240 seconds) |
01:58:30 | * | Jesin quit (Quit: Leaving) |
02:03:18 | * | krux02 quit (Remote host closed the connection) |
02:11:41 | * | chemist69 joined #nim |
02:57:06 | zachcarter | got my old java demo working : http://imgur.com/a/mLUMn |
02:58:00 | FromGitter | <Varriount> zachcarter: Woo! |
02:58:30 | zachcarter | now I have a good reference for this port :D |
03:03:35 | * | Nobabs27 quit (Quit: Leaving) |
03:05:29 | * | brson quit (Ping timeout: 255 seconds) |
03:10:46 | FromGitter | <Varriount> zachcarter: Any story ideas for your roguelike? |
03:11:29 | zachcarter | unfortunately Im not too great in that department, something about exploring derelict alien spaceships / worlds |
03:12:07 | zachcarter | and collecting resources |
03:12:13 | zachcarter | to get home |
03:12:15 | zachcarter | or something |
03:12:32 | zachcarter | I haven’t thought too much into story, only a bit into a gameplay, a lot into generating stupid things :P |
03:12:52 | zachcarter | I have also worked out some critical portions of game code, like a turn scheduling system, etc |
03:17:06 | FromGitter | <Varriount> zachcarter: You might like this: http://www.asceai.net/meritous/ |
03:17:44 | zachcarter | did you make this? |
03:18:06 | FromGitter | <Varriount> Nope. But I've played it several times over the years. |
03:18:14 | zachcarter | ah cool :D I’ll check it out seems neat |
03:18:38 | FromGitter | <Varriount> I found it all the way back in 2008 |
03:20:01 | FromGitter | <Varriount> It's not turn based, but real-time, so you might not think of it as a true 'roguelike' |
03:20:11 | FromGitter | <Varriount> But I found it fun anyway. :D |
03:20:18 | zachcarter | yeah a lot of roguelike games do that |
03:45:05 | * | Jesin joined #nim |
05:04:05 | * | brson joined #nim |
05:18:54 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
05:23:14 | * | vivus quit (Quit: Leaving) |
05:53:28 | * | yglukhov joined #nim |
05:58:31 | * | rokups joined #nim |
06:13:06 | ldlework | zachcarter: did you look at Entitas at all? |
06:21:53 | * | rauss quit (Quit: WeeChat 1.7) |
06:24:03 | * | dexterk quit (Read error: Connection reset by peer) |
06:24:37 | * | brson quit (Ping timeout: 240 seconds) |
06:24:56 | * | dexterk joined #nim |
06:31:01 | * | yglukhov quit (Remote host closed the connection) |
06:36:45 | * | nsf joined #nim |
06:54:25 | * | gsingh93 quit (Ping timeout: 260 seconds) |
06:54:55 | * | pleiosau1 quit (Ping timeout: 268 seconds) |
06:55:21 | * | bbl__ quit (Ping timeout: 260 seconds) |
06:55:22 | * | pleiosaur joined #nim |
06:55:33 | * | Gonzih quit (Ping timeout: 268 seconds) |
06:55:49 | * | kier quit (Ping timeout: 260 seconds) |
06:55:49 | * | joebo quit (Ping timeout: 260 seconds) |
06:56:09 | * | _yeeve quit (Ping timeout: 268 seconds) |
06:56:10 | * | abeaumont quit (Ping timeout: 268 seconds) |
06:56:39 | * | _yeeve joined #nim |
06:57:19 | * | gsingh93 joined #nim |
06:58:44 | * | joebo joined #nim |
06:59:08 | * | Gonzih joined #nim |
06:59:47 | FromGitter | <TiberiumPY> There's A* for Nim already |
07:00:15 | * | kier joined #nim |
07:01:31 | * | bbl__ joined #nim |
07:08:09 | FromGitter | <Bennyelg> Anyone accomplish go to definition ?! ATOM/Aforia/vs code none of them work |
07:09:22 | * | Vladar joined #nim |
07:17:32 | * | couven92 joined #nim |
07:23:50 | * | yglukhov joined #nim |
07:27:06 | ldlework | Is there a way to do a bitfield |
07:37:00 | * | arnetheduck quit (Remote host closed the connection) |
07:43:18 | * | arnetheduck joined #nim |
07:43:50 | * | nightmared quit (Ping timeout: 240 seconds) |
07:44:34 | * | nightmared joined #nim |
07:53:25 | * | couven92 quit (Quit: Leaving) |
07:54:21 | * | ftsf quit (Quit: :q!) |
08:03:18 | FromGitter | <Varriount> ldlework: Sets? |
08:03:53 | FromGitter | <Varriount> @Bennyelg Sublime Text's heuristic "go to definition" works |
08:04:16 | FromGitter | <Varriount> zachcarter: I think the first game I would make with your framework would be a clone of Meritous |
08:04:37 | FromGitter | <Varriount> The original's source code is freely available. |
08:24:49 | * | gokr joined #nim |
08:37:50 | euantor | This may be of interest given the earlier discussion about a Nim sandbox: https://idea.popcount.org/2017-03-28-sandboxing-lanscape/ |
08:40:17 | euantor | Also of potntial interest is some background on the Go playground: https://blog.golang.org/playground |
08:43:10 | * | Arrrr joined #nim |
08:43:10 | * | Arrrr quit (Changing host) |
08:43:10 | * | Arrrr joined #nim |
08:54:42 | * | abeaumont joined #nim |
09:11:25 | * | erwana[m] quit (Remote host closed the connection) |
09:11:26 | * | M-Quora quit (Write error: Connection reset by peer) |
09:11:26 | * | ehmry[m] quit (Read error: Connection reset by peer) |
09:11:26 | * | stisa quit (Read error: Connection reset by peer) |
09:11:27 | * | TheManiac quit (Read error: Connection reset by peer) |
09:11:27 | * | Jipok[m] quit (Remote host closed the connection) |
09:11:29 | * | jivank[m] quit (Read error: Connection reset by peer) |
09:11:29 | * | dyce[m] quit (Write error: Connection reset by peer) |
09:11:29 | * | Guest73656[m] quit (Remote host closed the connection) |
09:11:30 | * | MrAxilus[m] quit (Write error: Connection reset by peer) |
09:11:30 | * | hohlerde quit (Write error: Connection reset by peer) |
09:12:46 | FromGitter | <stisa> euantor: Also maybe this for a starting point https://github.com/theduke/nim-playground |
09:13:27 | euantor | Interesting, thank |
09:13:31 | euantor | *thanks |
09:13:49 | * | vlad1777d joined #nim |
09:14:02 | * | dyce[m] joined #nim |
09:18:42 | * | M-Quora joined #nim |
09:18:42 | * | ehmry[m] joined #nim |
09:18:42 | * | MrAxilus[m] joined #nim |
09:18:48 | * | TheManiac joined #nim |
09:18:48 | * | Jipok[m] joined #nim |
09:18:48 | * | hohlerde joined #nim |
09:18:49 | * | stisa joined #nim |
09:18:49 | * | jivank[m] joined #nim |
09:18:49 | * | Guest73656[m] joined #nim |
09:19:18 | * | erwana[m] joined #nim |
09:20:11 | * | Vladar quit (Remote host closed the connection) |
09:24:53 | * | Vladar joined #nim |
09:26:51 | * | kn0t[at]work joined #nim |
09:29:43 | ldlework | How do you create a ptr to a tuple type? |
09:31:58 | ldlework | hrmmm |
09:32:24 | Arrrr | ptr[(int, int)] ? |
09:32:31 | ldlework | this wants ptr Rects but I dunno how you create em |
09:32:34 | ldlework | https://github.com/nim-lang/sdl2/blob/master/src/sdl2.nim#L1001 |
09:32:39 | ldlework | what |
09:33:05 | Vladar | var rect1: Rect |
09:33:08 | Vladar | addr(rect1) |
09:33:43 | ldlework | oh |
09:34:45 | ldlework | nice it works |
09:34:47 | ldlework | thanks Vladar |
09:34:56 | Vladar | np |
09:37:18 | ldlework | https://zippy.gfycat.com/VengefulQuarterlyHectorsdolphin.webm |
09:38:10 | ldlework | I bet I have so many allocations |
09:38:49 | * | bjz joined #nim |
09:46:50 | * | Vladar quit (Remote host closed the connection) |
09:49:55 | * | kn0t[at]work quit (Quit: leaving) |
09:54:07 | * | Vladar joined #nim |
09:57:45 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
10:00:01 | * | bjz joined #nim |
10:16:27 | * | Vladar quit (Remote host closed the connection) |
10:19:20 | zachcarter | Idlework: I did it looks nice |
10:19:34 | * | Vladar joined #nim |
10:20:56 | zachcarter | Varriount: I bet you could clone Meritous just using Nimgame, but I could give it a shot |
10:20:59 | zachcarter | it looks like a cool game |
10:21:03 | zachcarter | haven’t looked at the code yet at all |
10:22:35 | zachcarter | Tiberium: any chance you could point me to it? also does it come with djikstra maps? |
10:23:37 | * | ftsf joined #nim |
10:24:19 | zachcarter | I’m thinking about recruiting some more help for frag |
10:24:27 | zachcarter | if anyone is interested, please let me know |
10:25:08 | zachcarter | especially help with sample games and some relatively easy core stuff, like colission etc |
10:25:21 | zachcarter | collision* |
10:56:30 | * | shashlick quit (Ping timeout: 240 seconds) |
10:57:53 | * | shashlick joined #nim |
11:04:12 | * | Snircle joined #nim |
11:06:37 | * | cspar quit (Ping timeout: 240 seconds) |
11:29:04 | * | cspar joined #nim |
11:34:49 | FromGitter | <Bennyelg> I cant get any editor to make autocompletion / go to definition |
11:34:54 | FromGitter | <Bennyelg> this is annoying. |
11:36:42 | Arrrr | Embrace anarchy |
11:36:52 | euantor | Which editors have you tried, and what OS? |
11:37:18 | euantor | Visual Studio Code just works for me on both WIndows and Mac, and Sublime Text 3 works pretty well too |
11:40:34 | * | ftsf quit (Remote host closed the connection) |
11:47:56 | * | BitPuffin|osx joined #nim |
11:51:06 | FromGitter | <TiberiumPY> can you guys maybe upvote nim? https://replit.canny.io/languages-requests/ I don't know if this will help, but we'll see :) |
11:53:33 | FromGitter | <TiberiumPY> (i got an email from repl.it newsletter 1 hour ago) |
11:58:05 | * | zachcarter quit (Quit: zachcarter) |
12:00:21 | * | zachcarter joined #nim |
12:05:13 | * | zachcarter quit (Ping timeout: 260 seconds) |
12:11:10 | * | zachcarter joined #nim |
12:11:33 | zachcarter | done |
12:13:03 | * | Jehan_ joined #nim |
12:13:52 | * | zachcarter quit (Client Quit) |
12:16:12 | * | bjz_ joined #nim |
12:17:49 | * | bjz quit (Ping timeout: 260 seconds) |
12:18:09 | * | ftsf joined #nim |
12:22:51 | * | Jehan_ quit (Quit: Leaving) |
12:25:54 | FromGitter | <Bennyelg> Voted. |
12:28:02 | * | Lord_Nightmare quit (Ping timeout: 240 seconds) |
12:34:51 | FromGitter | <Bennyelg> My Atom configuration ⏎ ⏎ `````` [https://gitter.im/nim-lang/Nim?at=58ee1eee408f90be66b2d070] |
12:35:16 | FromGitter | <Bennyelg> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=58ee1f0708c00c092a7309e3] |
12:35:19 | FromGitter | <Bennyelg> nim: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=58ee1f0af22385553d33a8df] |
12:35:42 | * | ftsf quit (Read error: Connection reset by peer) |
12:35:56 | * | ftsf joined #nim |
12:36:23 | FromGitter | <Bennyelg> I tried with /usr/local/Cellar/nim/0.16.0/bin/nim but wont help |
12:36:47 | euantor | I've not tried Atom, so I can't help with that I'm afraid |
12:38:00 | FromGitter | <Bennyelg> Same issue with sublime text, vscode |
12:38:15 | * | krux02 joined #nim |
12:38:19 | flyx | Bennyelg: well I believe the nimExecutablePath should not point to nimble |
12:39:15 | FromGitter | <Bennyelg> As I said It was point to /usr/local/Cellar/nim/0.16.0/bin/nim |
12:39:51 | flyx | does vscode give any error in the console? |
12:41:27 | FromGitter | <Bennyelg> it does. it's says I dont have nim in path althought I do have it. |
12:42:09 | flyx | perhaps not the PATH vscode knows about. |
12:42:45 | flyx | I am not a homebrew user so I don't really know the details of using homebrew Nim |
12:47:00 | FromGitter | <Bennyelg> It does not really matter, I tried manually but same same. ⏎ On Atom I did achieve a lang warnings and something like import tttt while throw an error of unknown library and import strutils for example will clear the error off. thats means It recognize the path. but the go-to decleration and the auto complete is not work. |
12:57:37 | * | Lord_Nightmare joined #nim |
13:02:24 | * | cspar quit (Ping timeout: 240 seconds) |
13:04:28 | * | zachcarter joined #nim |
13:13:43 | * | george2seven joined #nim |
13:14:38 | * | Gonzih quit (Ping timeout: 252 seconds) |
13:17:05 | Araq | well /usr/local/Cellar/nim/0.16.0/bin should be in your PATH, the dir, not the binary |
13:17:54 | demi- | no it shouldn't |
13:18:05 | demi- | brew symlinks the bins into /usr/local/bin |
13:19:18 | demi- | the cellar directory is just for separating versions between installations |
13:21:56 | FromGitter | <TiberiumPY> wait |
13:22:17 | FromGitter | <TiberiumPY> @Bennyelg there's no auto complete |
13:22:25 | FromGitter | <TiberiumPY> i mean no smart autocomplete |
13:22:28 | FromGitter | <TiberiumPY> just text completion |
13:22:38 | FromGitter | <TiberiumPY> and btw, go-to declaration doesn't work for me either |
13:23:38 | demi- | also if you have `/usr/local/bin` in your normal path, then it would be there for VSCode as well |
13:23:56 | FromGitter | <TiberiumPY> yeah, I've done it just adding Nim to path |
13:24:08 | FromGitter | <TiberiumPY> (I have my nim in a custom folder because I recompile it from time to time) |
13:27:42 | arnetheduck | Araq, btw, errno is a function in glibc - ok to change to a function in posix (for all platforms)? it's a breaking change |
13:29:11 | * | Gonzih joined #nim |
13:30:39 | Araq | errno is a #define |
13:30:45 | krux02 | well I symlinked the binaries, too |
13:30:55 | krux02 | works very well |
13:32:36 | Araq | arnetheduck: well we should have made a function from the beginning |
13:33:13 | Araq | but now it's too late, this requires a -d:errnoFunc transition switch |
13:33:13 | krux02 | TiberiumPY what editor do you use? |
13:36:29 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
13:43:02 | * | yglukhov quit (Remote host closed the connection) |
13:44:25 | * | yglukhov joined #nim |
13:49:03 | FromGitter | <brechtm> for item in mySeq... is it possible to make item mutable? |
13:49:56 | arnetheduck | well, it's a sufficiently isolated case that I can hardcode it in nlvm, but semantically, it's.. a little off presenting it like that to the user |
13:51:42 | arnetheduck | "It is unspecified whether errno is a macro or an identifier declared with external linkage." |
13:52:34 | arnetheduck | a proc in nim should cover all bases though |
13:54:29 | FromGitter | <brechtm> ah, I should call mpairs explicitly? |
13:56:52 | cheatfate | arnetheduck, but you need to test it on many systems... because looks like currently you are only testing it on linux, and because `errno` can have different semantics even on BSDs, and i'm not talking about solaris, haiku and others we trying to support |
13:58:04 | arnetheduck | yeah, that's the crux, I'm kind of relying on the automated tests to do that - it's not feasible to test on all platforms manually every time (in part because I don't have access to them, but also because of how long it takes) |
14:00:29 | arnetheduck | cheatfate, I started out ambitiously trying to cover all of them by reading headers and docs for them, but it's hopeless, so now I'm focusing on linux amd64 only, and hoping that a) others chip in on other platforms, and b) that as part of that process, more automated tools are developed for the task |
14:01:39 | cheatfate | arnetheduck, for some reason i dont think its hopeless and trying to test my code over 7 platforms |
14:02:16 | * | george2seven quit () |
14:03:09 | arnetheduck | it's hopeless if you don't have convenient access to them, and it saps time from getting at least one platform right. once there's a model to follow, it's easier to do the rest. |
14:04:08 | arnetheduck | so I actually kind of like it this way - status quo for everything except one platform, then gradually the rest can change |
14:04:55 | arnetheduck | so likely I'll leave errno as is, just because I cannot do it right and maintain status quo |
14:17:12 | * | rauss joined #nim |
14:20:21 | arnetheduck | besides, that's what the automated test suite is for, after all.. I'd love to be able to run it without creating a pull request however.. I'm guess I'd have to set something up for my own fork, but I haven't looked into how that's done |
14:23:07 | * | bjz_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
14:34:23 | * | bjz joined #nim |
14:36:44 | FromGitter | <brechtm> Remind me again why I should prefer generic functions over methods? Which of the generic functions is being called depends on the order ion which they were defined, which is annoying. |
14:40:48 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
14:41:12 | krux02 | Well I think Nim should complain whenever generic function resolution is definition order dependent |
14:41:24 | krux02 | that is nothing that should happen |
14:41:40 | krux02 | But I think I did not have that case yet |
14:47:49 | FromGitter | <brechtm> @krux02 Do you know whether there is a ticket for that? |
14:54:15 | krux02 | brechtm: sorry I don't know |
14:54:26 | krux02 | and I think the ticked system is a bit overburden |
14:54:55 | krux02 | there should be a faster feedback cycle that puts the tickets into buckets |
14:55:37 | euantor | Generic functions are statically dispatched if I remember correctly (the compiler decides which function to call at compile time), whilst methods are dynamically dispatched (the function to call is decided at run time) |
14:55:56 | euantor | Though I could be wrong regarding generic functions |
14:56:12 | krux02 | euantor of course generic functions are statically dispatched |
14:56:21 | krux02 | 100% sure |
14:56:51 | euantor | Good, I thought so, so that's the answer to "Remind me again why I should prefer generic functions over methods?" :) |
15:02:03 | krux02 | well so far I did not yet use methods at all for all my tasks |
15:02:13 | krux02 | but that depends on what you do if you need them or not |
15:02:32 | * | krux02 quit (Remote host closed the connection) |
15:02:38 | euantor | I used them for a project, but I'm going to rewrite it soon to remove them |
15:09:25 | * | onionhammer quit (Ping timeout: 246 seconds) |
15:12:10 | * | onionhammer joined #nim |
15:18:03 | FromGitter | <brechtm> As I see it, the compiler takes care of calling the right methods. When using generic procs, I need to take care. |
15:20:27 | FromGitter | <brechtm> So using methods, development time is shorter and the code is safer. When using generic procs, execution is a tiny bit faster. |
15:21:19 | FromGitter | <brechtm> But that is probably only a problem for generic procs operating on object types with an inheritance hierarchy. |
15:22:58 | Sentreen | Is there a way to abort compiling a certain module? Something like `when not defined(myfeature): abort`? I know I can do `when defined(...):` and leave it empty, but I'd prefer to avoid indenting my entire file if I can :) |
15:24:16 | demi- | you could do it on the includes, right? |
15:25:02 | cheatfate | Sentreen, {.error.} pragma |
15:26:07 | cheatfate | {.error: "Your platform is not supported.".} |
15:29:44 | Sentreen | Right, but I don't want to abort execution. I want to decide whether or not I include some features at compile time. The code should still compile when the symbol is not present |
15:31:26 | demi- | separate that code out into a separate file that doesn't get included if it isn't supported? |
15:31:57 | Sentreen | Yeah, that's what I'm doing now :). I was just wondering if I could specify it in the module itself |
15:43:41 | * | Trustable joined #nim |
15:45:09 | arnetheduck | is there somehow I can include a file if it exists, and another otherwise? something like when exists("a.nim"): include a else: include b |
15:51:18 | dom96 | Maybe: when compiles(include a): ... |
15:53:23 | * | nsf quit (Quit: WeeChat 1.7) |
15:53:39 | * | krux02 joined #nim |
15:55:01 | * | krux02 quit (Remote host closed the connection) |
15:55:11 | * | krux02 joined #nim |
15:56:14 | * | krux02 quit (Remote host closed the connection) |
15:56:25 | * | krux02 joined #nim |
15:57:08 | * | yglukhov quit (Remote host closed the connection) |
15:59:07 | * | yglukhov joined #nim |
15:59:33 | * | krux02 quit (Remote host closed the connection) |
15:59:44 | * | krux02 joined #nim |
16:02:18 | * | yglukhov_ joined #nim |
16:03:31 | * | yglukhov quit (Ping timeout: 260 seconds) |
16:07:01 | * | yglukhov_ quit (Ping timeout: 260 seconds) |
16:13:07 | arnetheduck | good idea, but: e.nim(1, 15) Error: expression expected, but found 'keyword include' |
16:42:37 | * | Lord_Nightmare quit (Ping timeout: 240 seconds) |
16:52:45 | * | devted joined #nim |
16:54:01 | * | arnetheduck quit (Remote host closed the connection) |
16:54:30 | * | arnetheduck joined #nim |
17:02:07 | * | yglukhov joined #nim |
17:06:31 | * | yglukhov quit (Ping timeout: 260 seconds) |
17:07:34 | cheatfate | Sentreen, {.hint.} |
17:07:34 | FromGitter | <Varriount> Arnetheduck: Are you able to check for existence and copy files at compile time? |
17:08:23 | FromGitter | <Varriount> arnetheduck: Why do you need conditional imports? |
17:08:49 | cheatfate | Sentreen, sorry i have misread your question |
17:08:56 | * | Lord_Nightmare joined #nim |
17:08:58 | cheatfate | {.hint.} is not an answer |
17:09:04 | arnetheduck | Varriount, I want to include a file if it exists, and fallback on a common default if it doesn't |
17:09:56 | arnetheduck | for example, if I have some amd64-specific stuff, I'd want to simply create a nim file in a special location and have it override some other generic nim file |
17:10:54 | FromGitter | <Varriount> Why not use `when ...: include x`? |
17:15:17 | * | yglukhov joined #nim |
17:16:32 | * | krux02 quit (Remote host closed the connection) |
17:16:42 | * | krux02 joined #nim |
17:17:36 | FromGitter | <Varriount> arnetheduck: ^ |
17:18:21 | arnetheduck | well, I want when exists(file): so I can drop a file in a magic location and it "just works" |
17:18:51 | arnetheduck | with when <explicit condition> i need to know the conditions beforehand or update them when the new file appeaers |
17:19:46 | arnetheduck | in python, I'd do this with something like try: import a except: import b |
17:21:03 | * | Trustable quit (Remote host closed the connection) |
17:21:30 | Araq | when fileExists(file) works at compile-time |
17:25:55 | FromGitter | <Varriount> Araq: You know, having two OS modules, with one available at compile time, is somewhat unintuitive |
17:27:22 | * | brson joined #nim |
17:27:43 | FromGitter | <Varriount> Plus, ospaths isn't even listed on the main documentation page. |
17:30:38 | FromGitter | <Varriount> Hm. But how could the compiler support an extensible compile-time ffi mechanism... |
17:36:32 | arnetheduck | posted https://github.com/nim-lang/Nim/pull/5698 based on an idea I've floated here before - instead of posix.nim which tries to follow some unknown standard, offer up a platform-specific libc layer that deals only with abi / types that does away with the lowest common denominator approach - I'd appreciate any feedback ;) |
17:38:08 | arnetheduck | I know you've wanted something more dynamic Araq, that detects this stuff live during compile, but that's a much bigger change, while this gives some incremental benefit and clears a big blocker off my nlvm list ;) |
17:39:55 | FromGitter | <Varriount> arnetheduck: What change will this require from end users? Will any changes to the standard library need to be made? |
17:40:07 | * | Lord_Nightmare quit (Ping timeout: 240 seconds) |
17:40:55 | Sentreen | More questions: I'm working with asyncdispatch and I get the following error that's a bit too tricky for me to get. lib/pure/asyncmacro.nim(31, 8) Error: 'cb' is not GC-safe as it accesses 'nameIterVar' which is a global using GC'ed memory. |
17:41:04 | arnetheduck | it's possible to include a backwards compatibility layer, but for end users, it would mean that instead of doing import poxis, they'd do import libc.sys_socket to get the socket functions for example |
17:41:11 | Sentreen | Is this related at all to the issue that prevents async procs from being forward declared? |
17:41:23 | dom96 | Sentreen: this is related to threads |
17:41:29 | dom96 | Do you need threads in your program? |
17:41:34 | dom96 | if not, don't compile with --threads:on |
17:42:08 | Sentreen | I do need threads. Basically asyncnet is running in it's own thread constantly managing multiple network connections that provide data to the rest of my program through channels |
17:42:15 | arnetheduck | this is actually mainly of use to the standard library itself, so that it has access to an accurate representation of what's available on each platform, and can offer up a more convenient, nimified api |
17:42:17 | Sentreen | *its own thread, sorry :) |
17:43:25 | dom96 | Sentreen: It's possible that you're accessing a global somewhere where you shouldn't |
17:43:58 | dom96 | One of your async procs perhaps? |
17:44:00 | arnetheduck | it gives separation of concerns, there's one library that does abi / importing only, but does it well, and then there are high-level libs which massage that into something nim-like |
17:46:40 | arnetheduck | this would also mean the availability of a near 1:1 mapping between nim and c, so it's easy to reuse existing c documentation etc |
17:48:11 | FromGitter | <Varriount> arnetheduck: Signs like something that would best exist as a separate package at first |
17:48:29 | Sentreen | dom96: I don't see anything; the error goes away when I remove a particular call to another async proc from a function. However, calling that async proc in another location doesn't cause any errors. |
17:49:44 | Sentreen | The arguments that I pass are a string (which I received from the network) and a freshly created socket, so I don't see any globals |
17:52:21 | FromGitter | <Varriount> Are you using openssl? |
17:52:59 | arnetheduck | Varriount, I thought of that, but the main use case for it is inside the standard library, which makes it a little.. awkward |
17:53:26 | Sentreen | No openssl, if you were talking to me |
17:53:43 | FromGitter | <Varriount> yes, I was. |
17:53:59 | FromGitter | <Varriount> Sentreen, is your code posted somewhere? |
17:54:00 | arnetheduck | what I'm aiming at is a standalone compiler for nim (without gcc/msvc, which ironically is most useful on windows, which I don't use any more ;)) |
17:54:21 | Sentreen | Let me try to create a minimal example |
17:54:36 | arnetheduck | doing libc this way will, I think, make it much easier to reuse inside the standard library |
17:55:24 | FromGitter | <Varriount> arnetheduck: isn't it better to use system headers when possible? So it wouldn't be completely standalone? |
17:55:25 | arnetheduck | and that in turn is necessary for a standalone compiler - it's doable with the posix.nim approach as well, but imo not very scalable |
17:56:07 | arnetheduck | Varriount, then you need a c compiler present - and you can't practically write a standalone one |
17:57:14 | demi- | if you are targetting your own system generally you can use your own headers, but if you are targetting anything else or an extended SDK then you may need to target a different sysroot |
17:58:42 | arnetheduck | Varriount, and "better" is subjective.. I'd prefer to use a language where I don't have to rely on c headers, and compile all code twice (once nim, then c) - the compile time and optimization opportunities should be evident |
18:00:38 | dom96 | Sentreen: thanks, a minimal example would help out a lot |
18:00:58 | arnetheduck | demi-, that's an interesting case.. with this available, cross-compiling is a breeze |
18:01:42 | arnetheduck | anyway, I'll be back tmr, seeya |
18:02:33 | * | rosshadden joined #nim |
18:02:49 | Sentreen | dom96, Varriount: https://pastebin.com/ecU6S93R |
18:03:14 | Sentreen | It doesn't do anything useful like this, but I don't think I can remove more without removing either the threading or the async logic |
18:03:49 | * | vivus joined #nim |
18:06:54 | dom96 | huh, it seems to be caused by the forward declaration |
18:08:57 | dom96 | This looks like a bug, not sure whether in Nim or in my async macro though. |
18:10:06 | Sentreen | Dang, any idea if I can work around this somehow? |
18:13:16 | * | dexterk_iMWTX joined #nim |
18:13:16 | * | dexterk quit (Disconnected by services) |
18:13:17 | * | dexterk_iMWTX is now known as dexterk |
18:16:06 | * | dom96 is trying to find a way but it's looking unlikely :\ |
18:18:01 | dom96 | oh wait |
18:18:09 | dom96 | you can just compile with the --threadAnalysis:off option |
18:18:23 | dom96 | Sentreen: Please report this as well :) |
18:19:54 | Sentreen | I will, but I should probably take the time to reduce it a bit further before I do :) |
18:20:12 | Sentreen | I'll try that |
18:20:30 | * | Lord_Nightmare joined #nim |
18:21:54 | dom96 | I think it's small enough |
18:22:05 | dom96 | It's more important that it doesn't have any dependencies |
18:22:07 | dom96 | than how small it is |
18:22:23 | Sentreen | Alright, I'll post an issue later |
18:22:35 | Sentreen | Compiling with threadAnalysis:off works by the way, thanks! |
18:22:53 | Sentreen | Any idea if I can put that in a {.push.} somehow? |
18:24:45 | dom96 | put it in your .nim.cfg file or .nims file |
18:26:20 | vivus | I have this piece of code here: https://www.zerobin.net/?40af719ba8db5916#V/e5btqjk6/JgHAVBYptr82pILiOngYq3HWVtHGT+Ac= |
18:26:29 | vivus | How do I select the row number? |
18:26:30 | Sentreen | Okay, just wanted to check if I could only disable it in that particular module :). |
18:26:34 | Sentreen | Thanks a lot for helping me out! |
18:31:17 | krux02 | Javascript is required for ZeroBin to work |
18:33:59 | krux02 | whould be better if it would just work |
18:34:44 | vivus | krux02: which paste tool can I use that doesn't need JS? |
18:35:24 | * | Arrrr quit (Quit: Leaving.) |
18:35:26 | krux02 | I use ix.io |
18:35:32 | krux02 | but that's a bit minimalistic |
18:36:05 | krux02 | https://pastebin.com/eGyzZdHn |
18:36:11 | vivus | and not https secured either |
18:37:07 | ldlework | TiberiumPY are you going to wrap imgui |
18:38:08 | ldlework | zachcarter: you should split out your nuklear binding |
18:38:19 | zachcarter | ? |
18:38:23 | zachcarter | from? |
18:38:35 | ldlework | frag |
18:38:38 | zachcarter | it already is |
18:38:44 | ldlework | oh |
18:38:49 | zachcarter | https://github.com/zacharycarter/nuklear-nim |
18:38:52 | krux02 | well sure it's not https, but on the other hand it's not really a secret or is it? |
18:39:09 | ldlework | zachcarter: it requires opengl I guess? |
18:39:24 | zachcarter | nope! you can use whatever rendering backend you want with Nuklear |
18:39:32 | vivus | I hope not |
18:40:05 | zachcarter | if you’re using sdl2 though I imagine it’d be difficult without OpenGL |
18:40:11 | krux02 | ldlework: if it would require opengl, would it be a problem? |
18:40:41 | ldlework | krux02: yeah because my game library only uses SDL2 blitting |
18:40:48 | ldlework | I'm not smart enough to upgrade to opengl |
18:41:15 | zachcarter | OpenGL isn’t that hard, just takes time to learn like anything else and it’s time consuming |
18:41:16 | krux02 | ok, I am working on a library that should make opengl more accessable |
18:41:28 | zachcarter | yeah krux02’s lib is nice |
18:41:32 | zachcarter | no OSX though :P |
18:41:46 | ldlework | I need more than opengl being accessible though |
18:41:54 | krux02 | when you use sdl2 for a 2D game I had the experience that software rendering was at least 10 times faster than hardware rendering with opengl backend |
18:42:02 | ldlework | what |
18:42:03 | vivus | krux02: my example is only 2 lines, so I will paste it here. (line1) let fetchdb = open("localhost", user, pass, dbname) (line2) for row in fetchdb.rows(sql("select post_content from posts")): |
18:42:13 | krux02 | the blitting is really badly implemented on the opengl backend |
18:42:20 | ldlework | Oh when using blitting |
18:42:24 | ldlework | Not all 2D games use blitting |
18:42:36 | ldlework | I'm just using because I don't have textured quads, etc |
18:42:56 | ldlework | I'm too lazy to understand all that batching stuff |
18:43:00 | krux02 | sdl2 renders blitting with textured quads |
18:43:02 | ldlework | I really hate it, its like doing taxes. |
18:43:11 | krux02 | and that's the problem one draw call per blit |
18:43:11 | ldlework | Yeah but not as efficiently as it could be |
18:43:12 | krux02 | very slow |
18:43:17 | krux02 | not recommended |
18:43:17 | ldlework | yeah |
18:43:20 | ldlework | exactly |
18:43:50 | ldlework | My game library will likely be very high-level and slow as balls. |
18:43:52 | krux02 | but small quads that wire not textures but surfaces (all software no rotation) was fast |
18:43:53 | * | Snircle joined #nim |
18:44:43 | krux02 | so if you have big sprites, do hardware, if you have small sprites, like particles, do software |
18:45:10 | krux02 | s/wire/were/ |
18:45:12 | ldlework | where is your library? |
18:45:33 | krux02 | https://github.com/krux02/opengl-sandbox |
18:45:53 | krux02 | https://github.com/krux02/opengl-sandbox/blob/master/examples/retro_tiling.nim |
18:47:31 | krux02 | you should know I never added "tilemap" as a feature of my library, it should just be easy to do it |
18:48:12 | ldlework | I pm'ed you |
18:48:42 | krux02 | ldlework: where? how? |
18:48:54 | vivus | okay, figured it out |
18:49:08 | ldlework | krux02: I mean it should popup somewhere in your client |
18:49:12 | ldlework | krux02: try /query ldlework |
18:50:54 | * | Arrrr joined #nim |
18:50:54 | * | Arrrr quit (Changing host) |
18:50:54 | * | Arrrr joined #nim |
19:08:33 | * | cspar joined #nim |
19:23:39 | * | nhywyll joined #nim |
19:27:16 | * | sz0 joined #nim |
19:37:17 | * | Sentreen quit (Ping timeout: 255 seconds) |
19:38:39 | * | nsf joined #nim |
19:42:15 | * | rokups quit (Quit: Connection closed for inactivity) |
19:42:16 | * | chinchilla left #nim (#nim) |
19:46:46 | * | Jesin quit (Quit: Leaving) |
19:50:42 | * | Sentreen joined #nim |
20:02:41 | * | nhywyll quit (Quit: nhywyll) |
20:03:30 | * | Arrrr quit (Quit: Leaving.) |
20:07:14 | * | zachcarter quit (Ping timeout: 260 seconds) |
20:08:22 | * | couven92 joined #nim |
20:14:25 | * | nsf quit (Quit: WeeChat 1.7) |
20:22:03 | * | pydsigner joined #nim |
20:26:39 | * | couven92 quit (Quit: Disconnecting) |
20:27:00 | * | mindB joined #nim |
20:31:22 | * | rauss quit (Quit: WeeChat 1.7) |
20:37:58 | * | Vladar quit (Quit: Leaving) |
20:41:22 | * | zachcarter joined #nim |
20:47:24 | * | bjz joined #nim |
20:51:21 | * | yglukhov quit (Remote host closed the connection) |
20:52:38 | FromGitter | <evacchi> do you think it would be possible to write something like haskell's "let" or "where" clauses ? https://wiki.haskell.org/Let_vs._Where |
20:53:07 | FromGitter | <evacchi> for now, I've come up with ⏎ ⏎ `````` [https://gitter.im/nim-lang/Nim?at=58ee93b669a692963ea4e760] |
20:53:40 | * | Jesin joined #nim |
20:53:50 | FromGitter | <evacchi> but it's pretty verbose if you have a few statements: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=58ee93e1f22385553d35fdb6] |
20:54:54 | FromGitter | <evacchi> pseudo-code for possible syntax I may like: ⏎ ⏎ ```let z = y+1 where: ⏎ let y = x+1 where: ⏎ let x = 1``` [https://gitter.im/nim-lang/Nim?at=58ee94208e4b63533dc1f426] |
21:02:29 | FromGitter | <dom96> I think you would need to wrap your whole expression in a macro call |
21:02:37 | FromGitter | <dom96> That way you can rewrite the AST as you wish |
21:03:29 | FromGitter | <dom96> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=58ee9624a0e4856242fb3be2] |
21:03:45 | FromGitter | <dom96> Perhaps you can come up with a better name than ``where`` for the macro. |
21:07:14 | * | gokr quit (Ping timeout: 245 seconds) |
21:12:26 | FromGitter | <Varriount> What would the macro do? The Haskell page mentions pattern matching. |
21:14:04 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
21:14:31 | FromGitter | <evacchi> basically, you can write an expression (statement list in my case) where some identifiers are actually bound later, rather than before |
21:14:34 | FromGitter | <evacchi> e.g. |
21:16:09 | FromGitter | <evacchi> ```let a = b + 10 ⏎ where b = 1``` [https://gitter.im/nim-lang/Nim?at=58ee991c08c00c092a755c10] |
21:16:36 | FromGitter | <evacchi> is equivalent to `let a = 1 + 10` |
21:18:35 | * | bjz joined #nim |
21:18:44 | FromGitter | <evacchi> I figured that if I just reorder the statement list from top down to bottom up I can come already pretty close to that (although it might be surprising) |
21:20:44 | FromGitter | <Varriount> @evacchi Huh. You could just have the macro reorder the statements I guess. |
21:28:01 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
21:32:54 | * | bjz joined #nim |
21:34:26 | * | sz0 quit (Quit: Connection closed for inactivity) |
21:40:34 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
21:56:12 | * | devted quit (Quit: Sleeping.) |
21:57:54 | * | vlad1777d quit (Quit: Leaving) |
22:04:06 | * | nsf joined #nim |
22:12:13 | ldlework | screen tearing with SDL2 vsync :( https://www.youtube.com/watch?v=elJmKJdrEbk |
22:15:36 | FromGitter | <Varriount> Isn't VSync supposed to prevent that? |
22:16:37 | ldlework | ya |
22:17:17 | zachcarter | your display device may not support vsync or something, sdl will return codes based on what’s supported / not supported |
22:17:48 | zachcarter | Some systems allow specifying -1 for the interval, to enable late swap tearing. Late swap tearing works the same as vsync, but if you've already missed the vertical retrace for a given frame, it swaps buffers immediately, which might be less jarring for the user during occasional framerate drops. If application requests late swap tearing and the system does not support it, this function will fail and return -1. In such a case, you |
22:17:48 | zachcarter | should probably retry the call with 1 for the interval. |
22:18:10 | zachcarter | not sure if you saw that or not |
22:18:35 | zachcarter | Varriount: I’m trying to think of ideas for a game to make, I was porting all my spaceship stuff but it’s a pain in the ass to find graphics for and I’m not totally in love with the idea |
22:19:00 | zachcarter | I started on what I planned to make a very generic space shooter, and that’s going fine and all, but that’s boring |
22:19:37 | ldlework | zachcarter: duuuuuude |
22:19:44 | dom96 | zachcarter: how simple should the game be? |
22:19:53 | ldlework | let's make cataclysm clone, based on data driven entities... |
22:20:01 | zachcarter | hahaha |
22:20:16 | ldlework | lets combine our libs and efforts |
22:20:20 | * | Nobabs27 joined #nim |
22:20:40 | zachcarter | we’d need a pretty decent ECS for your idea first wouldn’t we? |
22:20:53 | zachcarter | dom96: I don’t know, what ideas do you have? I’m thinking something that’s finishable |
22:21:18 | ldlework | zachcarter: Sure, I want to build one. I'm half-way there. |
22:21:36 | dom96 | Maybe you could start with some of the classics? Space invaders? Tetris? Flappy Bird? |
22:21:56 | zachcarter | dom96: Yeah that’s kind of the direction I was headed with the space shooter thing |
22:22:25 | ldlework | One of my favorite games is to make this game where you're a blob |
22:22:27 | FromGitter | <Varriount> zachcarter: Well, I've suggested remaking Spybot and Meritous |
22:22:33 | ldlework | and you pick up sludge |
22:22:34 | FromGitter | <Varriount> ldlework: Gish? |
22:22:42 | ldlework | nah top-down arcade |
22:22:46 | ldlework | so like a square arena |
22:22:49 | dom96 | zachcarter: graphics are always a problem, it's the reason I rarely make games. |
22:22:50 | ldlework | its a take on snake |
22:22:56 | dom96 | But for these classics finding graphics should be easier |
22:23:00 | zachcarter | dom96: truth |
22:23:01 | ldlework | each time you pick up a sludge you get heavier and slower |
22:23:09 | ldlework | and a laser is spawned horizontal or vertical |
22:23:15 | ldlework | that bounces back and forth |
22:23:22 | ldlework | when you get hit, you lose some sludge |
22:23:26 | ldlework | but you also move faster again |
22:23:31 | ldlework | the game is self-limiting |
22:23:41 | ldlework | so its perfect arcade high-score material |
22:23:50 | dom96 | ldlework: ooh, I like it. |
22:23:54 | zachcarter | Varriount: I couldn’t remember the title of either, and I couldn’t find Meritous in my history from this morning, going to look at that now - code wise |
22:24:10 | dom96 | Sounds like it would hook you in since you never really lose completely. |
22:24:18 | dom96 | So it's easy to keep going. |
22:24:22 | ldlework | until you get hit when you're a single blob |
22:24:25 | ldlework | then you lose |
22:24:26 | FromGitter | <Varriount> zachcarter: Just be aware, the source code for meritous is GPL |
22:24:41 | dom96 | well, perhaps you shouldn't lose :P |
22:24:48 | ldlework | dom96: evevntually the screen is filled with lazers |
22:24:58 | ldlework | taking up each horizontal and vertical column/row |
22:25:07 | ldlework | death is what creates the highscore |
22:25:16 | ldlework | what's nice is that the game is forgiving |
22:25:28 | ldlework | and you can manage your own mobility by taking hits on purpose |
22:25:28 | FromGitter | <Varriount> zachcarter: So if you decide to use the source code while translating, you hit that legal grey area. |
22:25:36 | zachcarter | right |
22:25:46 | zachcarter | hrm |
22:25:53 | ldlework | This game was a pyweek entry I made :) |
22:26:03 | dom96 | hrm, suddenly I'm reminded of this mini game in SA:MP I loved. But that would require 3D :) |
22:26:03 | ldlework | My teammate even made awesome shader for the blob player and the lasers |
22:26:09 | dom96 | I've always wanted to re-create it |
22:26:14 | FromGitter | <Varriount> zachcarter: You can still avoid that by just playing the game and observing it. Or having someone describe the code in general terms. |
22:26:16 | * | Nobabs27 quit (Quit: Leaving) |
22:26:17 | dom96 | I should add it to my ideas list |
22:26:30 | ldlework | the high-score list https://pyweek.org/media/dl/10/__pyweeklings__/Screenshot-Pyweek%2010%20-%20Wabble%20by%20team%20__pyweeklings__.png |
22:26:37 | FromGitter | <Varriount> zachcarter: I believe the latter is what the MinGW project did for headers. |
22:26:52 | zachcarter | ah okay |
22:27:20 | ldlework | yay I still have the code, https://github.com/dustinlacewell/pw10-wabble |
22:27:28 | * | ldlework tries to get it to work |
22:29:07 | ldlework | :( |
22:29:11 | ldlework | It runs very very very slow |
22:29:44 | ldlework | oh no it works |
22:29:47 | ldlework | nice |
22:29:49 | ldlework | :D |
22:29:53 | ldlework | its so tiny on my hi-dpi lmao |
22:30:05 | ldlework | aww it crashed |
22:30:21 | FromGitter | <Varriount> zachcarter: https://en.wikipedia.org/wiki/Clean_room_design |
22:31:31 | pydsigner | I never did win Meritous |
22:31:55 | pydsigner | I fought that final boss so many times but never pulled it off |
22:35:13 | FromGitter | <Varriount> pydsigner: It helps if you get all the upgrades. |
22:37:06 | ldlework | I recorded a video of Wobble |
22:37:11 | ldlework | it still works :D |
22:37:17 | pydsigner | I think I did, but maybe not. I think I had cleared the entire rest of the map |
22:37:53 | pydsigner | It's been few years |
22:40:14 | ldlework | https://www.youtube.com/watch?v=OtjnqQrx5hU |
22:40:18 | ldlework | dom96: ^ |
22:41:00 | krux02 | What do you think for 'nim compile' to only allow imports of packages that are actually defined as dependencies in project.nimble if that file exists? |
22:41:17 | dom96 | ldlework: cool, port it to Nim! |
22:41:30 | dom96 | Those level backgrounds are messing with my mind |
22:42:05 | dom96 | I love them though, awesome how they transition |
22:42:14 | ldlework | It'll be hard without Pyglet/High-level OpenGL |
22:42:45 | ldlework | dom96: I made it about 40 here :) |
22:43:18 | dom96 | krux02: 'nimble c' does this already |
22:43:55 | krux02 | interesting |
22:44:04 | krux02 | I was always using just nim |
22:45:02 | * | nightmared quit (Ping timeout: 260 seconds) |
22:46:25 | * | nightmared joined #nim |
22:46:39 | krux02 | ldlework: the monster picture in the end at the score reminds me of this: http://autoimg.clipfish.de/autoimg/4b89e3f6c0fa826a45e419ba0ddd3b6c/0x0/jammerlappen-wird-von-klofrau-glkler-abgefertigt-die-puppenstars.jpg |
22:48:15 | ldlework | that's a 1x1 pixel |
22:48:19 | ldlework | lol |
22:49:19 | ldlework | Once nim has a pyglet like library we should have a nim game competition |
22:49:27 | ldlework | or even before then |
22:50:36 | * | Nobabs27 joined #nim |
22:56:59 | FromGitter | <Varriount> I always have mixed feelings about Nimble. On the one hand, it does a great job as a package manager. On the other, i dislike having to use it as a build too. |
22:57:03 | FromGitter | <Varriount> *tool |
22:59:19 | pydsigner | It's kinda like pip in Python I guess |
23:00:41 | dom96 | Suggestions on how to improve it more than welcome :) |
23:01:50 | FromGitter | <Varriount> pydsigner: Pip calls setup.py, but doesn't actually mandate any particular build format. |
23:01:58 | FromGitter | <Varriount> Other than that script. |
23:02:26 | FromGitter | <Varriount> And you can call setup.py on your own, without pip |
23:04:58 | * | [ui] joined #nim |
23:06:10 | dom96 | what do you mean by "build format"/ |
23:06:11 | dom96 | *? |
23:07:38 | FromGitter | <Varriount> The nimble files |
23:08:05 | FromGitter | <Varriount> Basically, I like being able to build my packages without relying on anything but the compiler. |
23:08:52 | dom96 | you can do that |
23:09:06 | dom96 | Nimble is only necessary for installing the dependencies |
23:10:03 | pydsigner | Which you need pip for in Python too |
23:10:45 | pydsigner | I am curious as to whether or not anyone has done virtualenvs for Nim yet |
23:21:44 | * | nsf quit (Quit: WeeChat 1.7) |
23:34:08 | * | enthus1a1t quit (Ping timeout: 240 seconds) |
23:46:40 | * | enthus1ast joined #nim |
23:51:51 | * | dexterk_kRqBe joined #nim |
23:51:51 | * | dexterk quit (Disconnected by services) |
23:51:52 | * | dexterk_kRqBe is now known as dexterk |
23:52:50 | * | def-pri-pub joined #nim |
23:54:43 | zachcarter | Idlework: I want to do game jams once frag is a little further along |