@@gametechexplained Lol. Lmao. At least you have a translation for what that pawn of source code means out there somewhere. The important thing is that it works, such code is how Terraria runs. It ain't pretty, but it's practical.
When you don't want fast or efficient code, but space-efficient xd I hope someone makes code so optimised that it could get mistaken for obfuscated code.
You should upload a video of your bot playing itself, stockfish, or other bots. Really cool video, can't wait to see how well your bot scores in the end! :)
Thank you! I'll think about a video like that. I had it play stockfish and Sebastian's bot from his videos, and it lost pretty decisively to both. Can't wait either!
Those are made in Blender (Cycles Renderer). Most of the action happens in Blender's node-based procedural tool, Geometry Nodes (changing color, moving up and down, adding the text for both the score and the little a1, a2, etc.) Each of the boards has an invisible "empty" object, and whose Y-coordinate controls how much the board is in the "points" state (moved up/down, with color and text showing). So I only have to animate that single invisible object for the transition.
@@gametechexplained Damn, I think I should start learning Blender's Geometry Nodes XD. (Actually I wanted to do it but haven't found a good time since…)
@@gametechexplained u should've done more with them, makes ur videos seem way more polished. I thought it was stock footage after u went back to a screen with a default font and badly drawn arrows.
@@pumpkin7976 yes, you're probably right. Making these takes me a lot of time, hopefully I'll be able to include more footage like this as I get better as this whole thing
@@gametechexplaineddon’t listen to this foul pumpkin who is very much not in the Halloween spirit. This whole video was excellent. Animations were next level though.
As Luke from LMG just said on the WAN show, if you make a good video the algorithm will pick it up and show it to people. You made a fantastic video and it showed up for me!
Thank you! I just started making videos this summer. This is only my third video ever. Really awesome to see people enjoy it. Honestly happy about every single view at this point
In modern versions of C# you can remove explicit variable type in stackalloc by wrapping it in (), like var smth = (stackalloc Type[10]); will be of type Span instead of default Type* pointer type.
Nice work! I definitely struggled with this challenge and my bot used some… “unique” heuristics as opposed to your approach lol but I’m curious to see the results! Thanks for the explanations!
if all your floats have similar magnitudes, its likely that scaled integers can get you much more accurate values. you can do a little analysis and see how many bits are "wasted" in your floats using some math or even just doing bitwise comparisons on the IEE 754 singles.
Yes, that is a good idea, too. Not sure about the network weights' range, but there are techniques to ensure weights stay reasonably small in absolute value (which I did not use for my network). They are halfs, by the way, not singles, so they only use 2 byte, compared to a 4 byte single. But yes, it is possible that scaled integers would have allowed me to go smaller / or better use the bits I have
Limiting the program to a number of source code "tokens" is perilous if you don't also limit the length of such a token. Ostensibly a string literal is one single token, so you could have a 10-megabyte string literal containing whatever you want, and as long as you can somehow use it to execute an algorithm you can do whatever you want.
@@DjVortex-w I don't think so but you can read the following: "You may not store data inside the name of a variable/function/class etc (to be extracted with nameof(), GetType().ToString(), Environment.StackTrace and so on)".
I'm curious as to what the neural network architecture for your first attempt was? With your 4-weights-per-token packing strategy, that's an upper bound of 4096 weights, so it'd have to be pretty small. With that kind of constraint, a standard network architecture would have capped out around 5 hidden layer neurons, which wouldn't have been enough to be any good.
I use 40 features as input, and 3 hidden layers of 12 neurons each. In my experiments, I tried various sizes up to 8 hidden layers and 32 neurons each with 54 features as input, and the loss was not much lower than the 3x12 setup. I think the main issue is using features as input rather than the full chess board, because we already loose a lot of information there. However, using one 8 by 8 set of inputs per each of the 12 piece types the way many papers seem to do it would mean max out our tokens with a single layer network already.
Excellent! While I never got around to completing (or even doing very much work on) my bot for the competition, I agreed that trying to make a "good bot" is a dead end... nobody's going to make anything that will beat Stockfish, so what's the point? But making something clever / creative / visually interesting / code that's shaped like a chess piece (!) is much more interesting. Well done, and good luck in the competition!
Dude, I'm so hyped how insane other people went with this challenge? I didn't have that much time and brain sells as you, so I hope my bot is top 0.001% of submissions... xD
wow i absolutely love the aesthetic code in a pawn at the end! very good video! now im a bit nervous about my entry if u r just trying to be in the top half lmao
1:27 I am studying AI myself in university and I love the idea of using half-precision with hex into a combined result, that's one of those things you get taught when studying AI by asking the question: "how can we make this faster?", lovely idea!
I thought about how much detail to add about that bot. But tbh making videos takes a lot of time for me, so I could not really go into detail about both. I might make a video about a different neural network project in the future
My thought is whether you can save more tokens by have the initializers expand out the compressed boards. The initializers would become a bit bigger, but you'd save tokens on access
Meanwhile I submitted Bob,a simple minded bot who only follows checks, captures and attacks and can run away if in danger. But you know what I had fun building Bob.
I can definitely see this creating a completely hilarious game where Bob takes a bunch of pieces then starts running it's king to the other side of the board
I did it by hand. I used a small black and white picture as guidance. However, the footage in the video is actually not me hand-formatting, but it's a small script I wrote that does the changes more optimally and quickly, to generate a smoother video. The script got the hand-created final result as input and calculated the changes needed
I dont know much about C#, but if it has "bytestring" literals, you could use those to compess any table into just one token (or even combine all tables into one long string). Trade-off is that element access is more complex, not 100% sure that it's worth it
Very cool man. When i saw sebastions video i got quite peaked. I havent followed that series though as i mostly followed his unity stuff and i feel more comfortable in python. Youre video is great and its really cool what more experienced programers are capable of. Its onspiring to know that im not so far from stuff lole this.
Great to hear! I did not know anything about Chess AI before watching his videos either. One thing I really love about his channel is that he can make you feel like you truly understand the all the basics of an entirely new thing in about 45 minutes
If tokens are counted, why not just have one really big string literal containing all the data? It's one token, no matter how large it gets (unless it's an interpolated string).
Lol, the challenge wanted to promote readable small chess bots, but you managed to make it infeasibly readable lmao.
Well, I focused on small ;) There's a more readable version of the code on my GitHub, but it's not the prettiest code ever written either
@@gametechexplained Lol. Lmao. At least you have a translation for what that pawn of source code means out there somewhere.
The important thing is that it works, such code is how Terraria runs. It ain't pretty, but it's practical.
The challenge doesn’t promote readable code, it promotes readable names. There are plenty of other bs tricks to save tokens
When you don't want fast or efficient code, but space-efficient xd
I hope someone makes code so optimised that it could get mistaken for obfuscated code.
You think I made readable code for the challenge? I barely remember what half of it does.
That code needs to be printed onto a shirt! Awesome looking
I like the idea!
Yessssssss
I would buy that shirt 😊
True...
@@gametechexplained You have 1 guaranteed purchase right here if you do!
Really cool video! Well edited, nice commentary, overall a great piece of youtube content!! Commenting for the algorithm!
Much appreciated!
yes, I hope more extremely experienced people start to make content
funny to see how optimizing token count distorts code into the least readable garbage possible (respectfully) lmao, great video
Thank you, I take that as a compliment
Yooo, it's a pleasant surprise to see you here. I hope you're enjoying life!
You can have readable code and you can have short code. There isn't a big intersection between the two
nice video man.
good commentary / narrating, video length pretty nice and good little flow for the edit.
keep this up, you will grow in no time
👍
Thank you for your kind words!
You should upload a video of your bot playing itself, stockfish, or other bots.
Really cool video, can't wait to see how well your bot scores in the end! :)
Thank you! I'll think about a video like that. I had it play stockfish and Sebastian's bot from his videos, and it lost pretty decisively to both. Can't wait either!
How did you do the animations at 6:20 with the 3D boards? They are really awesome!
Those are made in Blender (Cycles Renderer). Most of the action happens in Blender's node-based procedural tool, Geometry Nodes (changing color, moving up and down, adding the text for both the score and the little a1, a2, etc.) Each of the boards has an invisible "empty" object, and whose Y-coordinate controls how much the board is in the "points" state (moved up/down, with color and text showing). So I only have to animate that single invisible object for the transition.
@@gametechexplained Damn, I think I should start learning Blender's Geometry Nodes XD. (Actually I wanted to do it but haven't found a good time since…)
@@gametechexplained u should've done more with them, makes ur videos seem way more polished. I thought it was stock footage after u went back to a screen with a default font and badly drawn arrows.
@@pumpkin7976 yes, you're probably right. Making these takes me a lot of time, hopefully I'll be able to include more footage like this as I get better as this whole thing
@@gametechexplaineddon’t listen to this foul pumpkin who is very much not in the Halloween spirit. This whole video was excellent. Animations were next level though.
Nice video, will definitely look forward to future ones.
Thank you!
As Luke from LMG just said on the WAN show, if you make a good video the algorithm will pick it up and show it to people. You made a fantastic video and it showed up for me!
Thank you! I am a bit overwhelmed tbh, I expected much less viewers
I'm always so impressed by source code formatted to be ASCII art
Thank you. You have probably seen that donut-shaped code, which was a huge inspiration
@@gametechexplainedI was thinking that must be the reference/idea behind it 😂
Which language(s) are best suited (most flexible) for this style of ASCII art as code? @@gametechexplained
Is it ASCII if it’s just a silhouette?
this is insane, how can you only have 17 subs???
Thank you! I just started making videos this summer. This is only my third video ever. Really awesome to see people enjoy it. Honestly happy about every single view at this point
Good news!
Great video! With this quality you will be able to go full-time in no-time 😈
I hope so!
In modern versions of C# you can remove explicit variable type in stackalloc by wrapping it in (), like var smth = (stackalloc Type[10]); will be of type Span instead of default Type* pointer type.
Nice! I did not know this! Always great to learn new things
Brilliant. Can't wait to hear from Sebastian.
Same hear! I think it'll take a bit of time. Just running those matches must take forever, unless he gets a bunch of PCs from somewhere
Amazing video, looking forwarding to seeing more videos from you!
Thank you!
i predict that this video will blow up
its very well made
Thank you! I really hope you are right
It definitely will
Great video! Definitely will stay around for more awesome stuff!
Awesome thank you!
Excellent video! Looking forward to seeing your bot in competition
Thank you, definitely looking forward, too!
This was great! Thanks for taking the time to edit and share your experience. Fascinating challenge!
great video, hope it gains you some recognition. The graphics were incredible
Much appreciated!
Awesome content! Good luck with competition :)
Thank you!
Loved it! Thanks for sharing in this nice video format.
Glad you enjoyed it!
definitely keep us updated!
Will do!!
Nice work! I definitely struggled with this challenge and my bot used some… “unique” heuristics as opposed to your approach lol but I’m curious to see the results! Thanks for the explanations!
Looking forward to seeing how your bot performs!
if all your floats have similar magnitudes, its likely that scaled integers can get you much more accurate values. you can do a little analysis and see how many bits are "wasted" in your floats using some math or even just doing bitwise comparisons on the IEE 754 singles.
Yes, that is a good idea, too. Not sure about the network weights' range, but there are techniques to ensure weights stay reasonably small in absolute value (which I did not use for my network). They are halfs, by the way, not singles, so they only use 2 byte, compared to a 4 byte single. But yes, it is possible that scaled integers would have allowed me to go smaller / or better use the bits I have
Interesting to see your thought process, great video!
Thank you!
Hugely underrated channel! I love the way you explain your process quickly but simply. Keep it up!
Thank you, I am planning to!
Great video man!
Appreciate it!
very cool video. good luck!
Thank you!
Limiting the program to a number of source code "tokens" is perilous if you don't also limit the length of such a token. Ostensibly a string literal is one single token, so you could have a 10-megabyte string literal containing whatever you want, and as long as you can somehow use it to execute an algorithm you can do whatever you want.
If you check the rules you'll see that this possibility has been denied by limiting namespaces and methods that are allowed to use
@@simonelungarella9000
Do the rules limit the length of string literals?
@@DjVortex-w I don't think so but you can read the following: "You may not store data inside the name of a variable/function/class etc (to be extracted with nameof(), GetType().ToString(), Environment.StackTrace and so on)".
@@DjVortex-w yes
@@DjVortex-w no but in strings every character counts as a token, so no free lunch there.
Where can I read about training a chess neural network?
im so glad i stumbled upon this channel
Amazing video! Nice work!
Damn nice video, I love the rendered shots
Thank you!
subbed, amazing work!!!
Much appreciated!
Very good vidéo 👍, hope your channel grows, you already have one international subscriber (French). 😉
Thank you! Awesome to hear that people from around enjoyed my video! Hoping to see you around!
Great job!
Thanks!
Loved the piece weight visualisation :)
Thank you!
Great videos, subscribed
Welcome aboard!
I'm curious as to what the neural network architecture for your first attempt was? With your 4-weights-per-token packing strategy, that's an upper bound of 4096 weights, so it'd have to be pretty small. With that kind of constraint, a standard network architecture would have capped out around 5 hidden layer neurons, which wouldn't have been enough to be any good.
I use 40 features as input, and 3 hidden layers of 12 neurons each. In my experiments, I tried various sizes up to 8 hidden layers and 32 neurons each with 54 features as input, and the loss was not much lower than the 3x12 setup. I think the main issue is using features as input rather than the full chess board, because we already loose a lot of information there. However, using one 8 by 8 set of inputs per each of the 12 piece types the way many papers seem to do it would mean max out our tokens with a single layer network already.
@@gametechexplained What were the 40 features?
Hey, it's the guy who chesses boys
RUclips is suggesting smaller creators that are high quality, and i love it
Thank you! Honestly, I am a bit overwhelmed with how many people watch this! I had ~200 views for my entire channel prior to this
I thoroughly enjoyed your video!
I'm so glad!
Nice video, doing all of the things for the algorithm for you
Thanks for that!
wow, i'm impressed with video quality
Happy to hear
Awesome stuff! 🤗
Nice work!!
Thanks!
Really cool ideas, your bot is better than mine for sure :D Good luck!
Thank you, and good luck, too. Looking forward to seeing how our bots will do
Amazing, need more people like you on youtube! Keep it up! 😁
Wow, thank you!
Very entertaining !!
Thank you!
incredible video! amazing animations aswell
Thanks a ton!
8:47 absolutely killed me bro. you earned a sub, great vid!
Thank you!
Really interesting video! I've been searching for content like this on youtube for a while .
Excellent! While I never got around to completing (or even doing very much work on) my bot for the competition, I agreed that trying to make a "good bot" is a dead end... nobody's going to make anything that will beat Stockfish, so what's the point? But making something clever / creative / visually interesting / code that's shaped like a chess piece (!) is much more interesting. Well done, and good luck in the competition!
Thank you so much!
great video man :)
Thank you!
actually underrated channel, the algo needs to know
Thank you!
Dude, I'm so hyped how insane other people went with this challenge? I didn't have that much time and brain sells as you, so I hope my bot is top 0.001% of submissions... xD
Looking forward to seeing how your bot does
Amazing Video man keep up the good work 🎉
Thanks! Will do!
Amazing video , keep going
Thank you, I will
Such a nicely made video, I'm so glad it got recommended to me. Subscribed!
Great video. Subbed and looking forward to your next upload.
Thank you!
Loved this video!
Very engaging Video! I'm curious to see how you bot does in the competition.
You earned a subscriber!
Thank you!
I absolutely love it! :D
I'm glad you like it
Awesome video!
Thank you!
excellent work
Thank you! Cheers!
you know he is great at coding when his code indentation looks like the project thumbnail itself
This is amazing!
cool video, nice throwback to the donut shaped donut code
Yes, that was definitely the main inspiration in terms of formatting
I sooooo wanted to join this man why did I have to be busy and sick
Oh, that is too bad
For only 300 subs, the quality and amount of effort put in is amazing. Here before 1k 🎉
Thank you! Tbh it is still hard to believe it went past 1k now. I had 17 subs when posting this
This video was awesome! Thanks. (+sub)
Awesome, thank you!
Amazing work :)
Great video definitely earnt my subscription and all those to come
Thank you, and welcome on board
@@gametechexplained I'll definitely be watching in future, remember me before you become famous 🤣
wow i absolutely love the aesthetic code in a pawn at the end! very good video! now im a bit nervous about my entry if u r just trying to be in the top half lmao
1:27 I am studying AI myself in university and I love the idea of using half-precision with hex into a combined result, that's one of those things you get taught when studying AI by asking the question: "how can we make this faster?", lovely idea!
this is AWESOME!
Thank you!
I'm going to quote my TA after showing her a code I made while on double the recommended daily does of NyQuil:
"what have you done?"
😂
Excellent work, earned a sub :)
Awesome, thank you!
I really think that for you to leave the beeping in would be awesome.
Yeah, maybe I should have
Would love to see a video focused solely on building that first neural network
I thought about how much detail to add about that bot. But tbh making videos takes a lot of time for me, so I could not really go into detail about both. I might make a video about a different neural network project in the future
this just goes to show, that writing small code is not the same as writing good code. (as in readable, understandable and clean)
Yes, very much true!
My thought is whether you can save more tokens by have the initializers expand out the compressed boards. The initializers would become a bit bigger, but you'd save tokens on access
I am not sure I fully understand... What do you mean by expanding out the compressed boards?
Meanwhile I submitted Bob,a simple minded bot who only follows checks, captures and attacks and can run away if in danger. But you know what I had fun building Bob.
That is the most important part! Looking forward to seeing how your bot does
I can definitely see this creating a completely hilarious game where Bob takes a bunch of pieces then starts running it's king to the other side of the board
I liked this video, well made and good documentary. Hope you win!
Thank you!
Great video!
Did you format you code into an image by hand or is that an extension?
I did it by hand. I used a small black and white picture as guidance. However, the footage in the video is actually not me hand-formatting, but it's a small script I wrote that does the changes more optimally and quickly, to generate a smoother video. The script got the hand-created final result as input and calculated the changes needed
@@gametechexplained that's even more impressive ❤
Is a string one token? What's stopping someone from serializing a neural net into one string?
A string counts as one token per character. Probably should have mentioned this
Heh, that last touch was amazing. :P
Thank you!
I dont know much about C#, but if it has "bytestring" literals, you could use those to compess any table into just one token (or even combine all tables into one long string). Trade-off is that element access is more complex, not 100% sure that it's worth it
I should've probably mentioned this, but string literals cost one token per character
@@gametechexplained Dang, Sebastian thought of everything.
@@pseudo_goose Not really, there were a lot of people who submitted issues to github outlining these flaws in the initial challenge.
I was totally not expecting that reformat at 9:17, but it looks awesome nonetheless! (readability has left the chat)
Thank you!
nice video, well edited too and about a interesting topic!
subscribed!🎉
Thank you and welcome
Wow this was a great video. I also made a bot for the challenge but it was nowhere as good as yours.
Thank you, looking forward to seeing how your bot does!
I wonder, do C# strings allow byte indexing? You could pack entire tables as a single string literal if they do.
Very cool man. When i saw sebastions video i got quite peaked. I havent followed that series though as i mostly followed his unity stuff and i feel more comfortable in python. Youre video is great and its really cool what more experienced programers are capable of. Its onspiring to know that im not so far from stuff lole this.
Great to hear! I did not know anything about Chess AI before watching his videos either. One thing I really love about his channel is that he can make you feel like you truly understand the all the basics of an entirely new thing in about 45 minutes
Agreed@@gametechexplained
Looks like something that needs to be submitted to The International Obfuscated C Code Contest.
If tokens are counted, why not just have one really big string literal containing all the data? It's one token, no matter how large it gets (unless it's an interpolated string).
I wondered about this too, seems like one could serialize a massive NN this way
It's a good idea, but a string literal actually counts as one token per character in this competition. I probably should have mentioned that
what ai library did u use to train the neural network
I use pytorch
This guys is a Computer Science genius!
Just wanted to say the quality on this video was outstanding for how low views it has!
Thank you!
Amazing animations 😮