Can THIS win Sebastian Lague's Chess challenge?
ฝัง
- เผยแพร่เมื่อ 7 ต.ค. 2023
- My contribution to Sebastian Lague's 2023 Chess bot programming competition. It looks positively dashing. But can it win?
UPDATE VIDEO: • Video
GitHub repo containing both bots mentioned in the video: github.com/GameTechExplained/...
A massive thanks to Sebastian for hosting this competition, and for his videos. You rock!
Creative Commons assets:
"Chess" (skfb.ly/6uVLu) by xnicrox is licensed under Creative Commons Attribution (creativecommons.org/licenses/b....
"Chess" (skfb.ly/oGrOq) by YarikLegendary is licensed under Creative Commons Attribution (creativecommons.org/licenses/b.... - วิทยาศาสตร์และเทคโนโลยี
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
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!
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!
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!
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.
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!
Nice video, will definitely look forward to future ones.
Thank you!
Great video! With this quality you will be able to go full-time in no-time 😈
I hope so!
Amazing video, looking forwarding to seeing more videos from you!
Thank you!
Such a nicely made video, I'm so glad it got recommended to me. Subscribed!
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
Hugely underrated channel! I love the way you explain your process quickly but simply. Keep it up!
Thank you, I am planning to!
This was great! Thanks for taking the time to edit and share your experience. Fascinating challenge!
Loved it! Thanks for sharing in this nice video format.
Glad you enjoyed it!
Amazing video! Nice work!
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
Really interesting video! I've been searching for content like this on youtube for a while .
Excellent video! Looking forward to seeing your bot in competition
Thank you, definitely looking forward, too!
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
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!
Loved this video!
Awesome stuff! 🤗
Amazing, need more people like you on youtube! Keep it up! 😁
Wow, thank you!
Interesting to see your thought process, great video!
Thank you!
great video, hope it gains you some recognition. The graphics were incredible
Much appreciated!
Great video! Definitely will stay around for more awesome stuff!
Awesome thank you!
Awesome content! Good luck with competition :)
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?
@@WarpRulez 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)".
@@WarpRulez yes
@@WarpRulez no but in strings every character counts as a token, so no free lunch there.
definitely keep us updated!
Will do!!
i predict that this video will blow up
its very well made
Thank you! I really hope you are right
It definitely will
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
im so glad i stumbled upon this channel
Amazing Video man keep up the good work 🎉
Thanks! Will do!
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!
Amazing work :)
incredible video! amazing animations aswell
Thanks a ton!
Great video. Subbed and looking forward to your next upload.
Thank you!
Damn nice video, I love the rendered shots
Thank you!
This is amazing!
Great video man!
Appreciate it!
subbed, amazing work!!!
Much appreciated!
nice video, well edited too and about a interesting topic!
subscribed!🎉
Thank you and welcome
Great videos, subscribed
Welcome aboard!
Loved the piece weight visualisation :)
Thank you!
I thoroughly enjoyed your video!
I'm so glad!
I liked this video, well made and good documentary. Hope you win!
Thank you!
Nice work!!
Thanks!
very cool video. good luck!
Thank you!
Very engaging Video! I'm curious to see how you bot does in the competition.
Amazing video , keep going
Thank you, I will
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 🤣
Awesome video!
Thank you!
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
Nice video, doing all of the things for the algorithm for you
Thanks for that!
Excellent work, earned a sub :)
Awesome, thank you!
great video man :)
Thank you!
Great job!
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
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?
@@gametechexplainedConvolutions
Hey, it's the guy who chesses boys
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!
You earned a subscriber!
Thank you!
Amazing animations 😮
Very entertaining !!
Thank you!
excellent work
Thank you! Cheers!
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
cool video, nice throwback to the donut shaped donut code
Yes, that was definitely the main inspiration in terms of formatting
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?
8:47 absolutely killed me bro. you earned a sub, great vid!
Thank you!
This video was awesome! Thanks. (+sub)
Awesome, thank you!
wow, i'm impressed with video quality
Happy to hear
I absolutely love it! :D
I'm glad you like it
actually underrated channel, the algo needs to know
Thank you!
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 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!
Fantastic video!! I wonder if anyone used any tricks from the demoscene community. Like I think it's not uncommon for them to store their entire script in a zipped format, and then to have a little piece of code that runs at the start to unpack the rest of the code and then run it.
Obviously things are a bit different since they are optimizing for raw script size and you are optimizing for tokens. But that could potentially be an interesting avenue. (If it's even possible in c# I have no idea if it would be)
I think it would be possible. There's an interesting trade-off between efficient packing and code needed to unpack, but this would definitely be interesting to try
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
I'm curious, could you fit a much larger network in if you made all of it's constant data just a single string, which was then processed on launch? I don't know exactly what C# considers a token, but I'd guess a string only counts as one, and that the library has some inbuilt feature for parsing JSON, XML, or some other structured markup.
very well made!
Thank you!
this is AWESOME!
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 ❤
Well made
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
You are a smart man
TH-cam 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
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!
Heh, that last touch was amazing. :P
Thank you!
I wanted to join this challenge but I'm neither good at C# nor board game algorithms. So I'll just watch from a distance... And I do hope you create more videos about programming
How does this compare to nanochess, which I believe used obfuscation? Also I've heard obfuscation can always be reverse engineered with some effort, but I think you proved with the original AI version that there's no way anyone could reverse engineer code that is just AI weights. Thoughts?
good video
Glad you enjoyed it
you know he is great at coding when his code indentation looks like the project thumbnail itself
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 really think that for you to leave the beeping in would be awesome.
Yeah, maybe I should have
nice!
Thanks!
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?"
😂
Aren't strings a single token? So you could have all the weights in a string formated with CSV and a splitter method to move it to the array. This way, you could have a neural net of almost arbitrary size inside. At least I think so.
Strings unfortunately were counted as a special case to avoid this: each character counted as its own token. Also, the rules forbid you from storing an arbitrary amount of data in identifier names and retrieving them.
Remember me when u get big! btw the algo picked it up for me, it was in my recommended so it should blow up soon :)
Will do, if that ever happens :) Definitely great to hear the algorithm starts to recommend my video. So far, most of my views were friends and family, tbh