Delimiter development diary

Discussion of chess software programming and technical issues.

Moderators: hgm, Dann Corbit, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
tmokonen
Posts: 1165
Joined: Sun Mar 12, 2006 5:46 pm
Location: Kelowna
Full name: Tony Mokonen
Contact:

Re: Delimiter development diary

Post by tmokonen » Thu Dec 24, 2020 3:30 am

maksimKorzh wrote:
Sat Dec 19, 2020 11:11 am
Happy you're back to work.
I've never heard of Lime by Richard,
is it open source? Where did you get it???
Can you please share the source code of Lime?
Lime is an older engine written by the same person that wrote Vice, Richard Allbert, aka Bluefever. You can get an exe and source from here:

https://www.mediafire.com/file/2gnwd7ee ... 6.zip/file

The link comes from the Chess Programming Wiki.

shinkarom
Posts: 64
Joined: Tue Nov 19, 2019 12:26 pm
Full name: Roman Shynkarenko
Contact:

Re: Delimiter development diary

Post by shinkarom » Thu Dec 24, 2020 11:05 am

Anyone, your thoughts on the project?
Right now it seems about as pointless as my life in general. Without feedback (or just acknowledging that the post is seen by someone) the enthusiasm begins to wane.

User avatar
maksimKorzh
Posts: 525
Joined: Sat Sep 08, 2018 3:37 pm
Location: Ukraine
Full name: Maksim Korzh
Contact:

Re: Delimiter development diary

Post by maksimKorzh » Thu Dec 24, 2020 11:57 am

shinkarom wrote:
Thu Dec 24, 2020 11:05 am
Anyone, your thoughts on the project?
Right now it seems about as pointless as my life in general. Without feedback (or just acknowledging that the post is seen by someone) the enthusiasm begins to wane.
The matter of fact that chess engine reflects your inner problems is totally fine. I wouldn't observe it as pointless for neither your life nor your project. You just have a vague goal and misordered internal vision on how to proceed.

You just try to understand that all you're doing in chess programming you're doing for yourself. It's totally fine that community doesn't care about your work. Example: do you remember the post about tomitank release? It's 2800+ engine in javascript that passed pretty silently - only a couple of comments in the thread.

It takes years to get recognized here. After 5+ years of participating this forum I only have a couple of friends who can give me a feedback.

Example: recently I've released WukongJS - only a couple of guys who were writing engines in javascript responded - others didn't care. But how can I blame people for not being interested in what am I doing??

You won't be surprised that people don't care of your life and what you feel inside, right? So it's the same with chess programming - everyone solves his own problems via writing an engine. Feedback is secondary. You can get it or not get it and it shouldn't change anything for you. You definitely have some internal issues - so keep writing chess engines - the process heals the wounds.

It may happen that you create a strong engine and noone still would care about it. You just try to accept the community as is and better focus on what you can give to it instead of what you can get of it.

Regarding CCRL - they are interested in any engine but not a clone. Here're simple steps to get into CCRL list:
1. Create a bug free move generator.
2. Use simplified eval from CPW (google it)
3. Implement the most basic alpha-beta search and quiescence + mvv lva move ordering
4. Implement bare minimum UCI protocol.
5. Ask for CCRL rating here, if no response I'll ask Gabor Szots to rate your engine.

You'll get around 1400 elo engine that would be YOURS. Than just keep improving it.

You don't need to port/reuse code - it's enough to use the ideas and implement them on your own.

Btw despite the fact I've written several engines (that noone really cares about) it's literally the same engine but improved every next iteration.

P.S. you can try didactic engine like I did. Btw Gerd Isenberg added me and my engines to CPW after I've switched to didactic engines.
JavaScript chess engine with UCI support, own GUI and public API:
https://github.com/maksimKorzh/wukongJS

Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ

shinkarom
Posts: 64
Joined: Tue Nov 19, 2019 12:26 pm
Full name: Roman Shynkarenko
Contact:

Re: Delimiter development diary

Post by shinkarom » Thu Dec 24, 2020 1:40 pm

maksimKorzh wrote:
Thu Dec 24, 2020 11:57 am
I've already resigned myself to the fact that CCRL is probably out of my reach. Next lowest goal would be to get into CPW, yet it too requires much more work than my bare minimum. The next lowest goal is to be able to participate in this forum without feeling like a nobody who pretends he understands something but doesn't.
For this I'm making Delimiter: just to be a fellow chess programmer. I warned that I am high maintenance; any comments (each day would be even better, or once in two days, but I got scared that the discussion of money question totally ruined your impression of me and you chose to ignore me as a bad contributor) would be preferable to silence, because silence makes it necessary to guess how I'm doing, and guessing positively would be vanity. The main reason for having this thread is conversation. It's unfair for me to ask for more attention compared to better programmers, but it's the only way I can proceed.
My earlier post started with the words "The stamina does not allow me to make an engine from scratch anymore. And building on an existing engine requires far too much work before it becomes sufficiently differentiated (in the stronger direction) to not be a cheap clone". I understand that with me simply rewriting files from that LIME62 folder there may be nothing to comment about... Still, it's gonna be some time before the engine works and plays. The enthusiasm may die completely if not propped from the outside.

User avatar
maksimKorzh
Posts: 525
Joined: Sat Sep 08, 2018 3:37 pm
Location: Ukraine
Full name: Maksim Korzh
Contact:

Re: Delimiter development diary

Post by maksimKorzh » Thu Dec 24, 2020 2:56 pm

shinkarom wrote:
Thu Dec 24, 2020 1:40 pm
maksimKorzh wrote:
Thu Dec 24, 2020 11:57 am
I've already resigned myself to the fact that CCRL is probably out of my reach. Next lowest goal would be to get into CPW, yet it too requires much more work than my bare minimum. The next lowest goal is to be able to participate in this forum without feeling like a nobody who pretends he understands something but doesn't.
For this I'm making Delimiter: just to be a fellow chess programmer. I warned that I am high maintenance; any comments (each day would be even better, or once in two days, but I got scared that the discussion of money question totally ruined your impression of me and you chose to ignore me as a bad contributor) would be preferable to silence, because silence makes it necessary to guess how I'm doing, and guessing positively would be vanity. The main reason for having this thread is conversation. It's unfair for me to ask for more attention compared to better programmers, but it's the only way I can proceed.
My earlier post started with the words "The stamina does not allow me to make an engine from scratch anymore. And building on an existing engine requires far too much work before it becomes sufficiently differentiated (in the stronger direction) to not be a cheap clone". I understand that with me simply rewriting files from that LIME62 folder there may be nothing to comment about... Still, it's gonna be some time before the engine works and plays. The enthusiasm may die completely if not propped from the outside.
I've already resigned myself to the fact that CCRL is probably out of my reach. Next lowest goal would be to get into CPW, yet it too requires much more work than my bare minimum. The next lowest goal is to be able to participate in this forum without feeling like a nobody who pretends he understands something but doesn't.
You remind me myself a few years ago, this is especially true for "feeling like a nobody who pretends he understands something but doesn't" - that's how I feel today as well))) Look at my avatar here, on talkchess - you'll instantly realize who are you dealing with))) I use to say: "if you're thinking that you're understanding something in chess programming - just go to tech room on talk chess and read a couple of posts by hgm or Andrew Grant - you'll realize that you're a total noob and proceeded 1 inch at most for the last couple of years". So feeling stupid, dumb and noob is totally fine here because the chess programming elite are so damn smart people we would probably never reach even in our dreams. It's like - you're ok that you're not able to fly like a superman right? You won't get depressed of that fact - same with reaching the level of chess programming elite. The only thing matters is RELATIVE improvement - where you were a year ago and where are you now.
For this I'm making Delimiter: just to be a fellow chess programmer. I warned that I am high maintenance; any comments (each day would be even better, or once in two days, but I got scared that the discussion of money question totally ruined your impression of me and you chose to ignore me as a bad contributor) would be preferable to silence, because silence makes it necessary to guess how I'm doing, and guessing positively would be vanity. The main reason for having this thread is conversation. It's unfair for me to ask for more attention compared to better programmers, but it's the only way I can proceed.
Yes, it's totally fine to approach like that. You ARE a fellow programmer already. You ARE writing code, debugging and trying to achieve something - that shouldn't be undervalued. Don't compare yourself with others, compare your self with the previous instance of your self - that's how human grow. Regarding money - it's totally fine - the desire to get donated for what you're doing is a normal desire and the fact that you didn't know how the donations work in this cruel world is fine as well. The idea is simple (trust me I know that from my own freelancing and youtubing experience) - as long as you ask for money - no one cares. This is bad, unfair and demotivating but that's the world we're living in. People would start offering you money on their own as soon as you'll be capable of doing something useful for them. Say your current engine - you're doing it to work something out within your own self, no matter what it is, so literally you're doing it for yourself, hence no one is gonna pay for that. You just try to get me correctly - I was doing USELESS things for quite a long time before realized the simple truth - if you want to get paid you need to provide some service. To get an idea of HOW useless some of my projects were have a look at this one: bootable brainfuck interpreter (no OS, you just boot into a shell that executes code written in esoteric brainfuck language) - https://www.youtube.com/watch?v=WeNI1k9--TQ (sorry for awful English - I didn't have enough practice - that was the very first youtube video where I started to talk in English in public, watch my latest videos for comparison), later I've made a DOS version of that interpreter: https://www.youtube.com/watch?v=MY4Y_sTVoLs

Regarding conversation - we DO have a conversation, so it's not a problem at all) You just don't wait for people to dive into what you're doing - they are always busy with their own stuff. When you have something interesting to share - just ping me here or via email: freesoft.for.people@gmail.com and show what you've done - that's it.
My earlier post started with the words "The stamina does not allow me to make an engine from scratch anymore. And building on an existing engine requires far too much work before it becomes sufficiently differentiated (in the stronger direction) to not be a cheap clone". I understand that with me simply rewriting files from that LIME62 folder there may be nothing to comment about... Still, it's gonna be some time before the engine works and plays. The enthusiasm may die completely if not propped from the outside.
To get enough feedback from the outside you need first to reveal your own path inside (no matter in chess progrmming or in life).
Writing a chess engine is a perfect practice to put your internal world in order, trust me (for comparison I'm practicing chinese internal art baguzhang for 15 years - doing the same forms via body and writing the same code for years brings the same result - you just starting being honest with yourself - knowing your up and downsides and humbly following the destiny meanwhile trying to bring as much good stuff to the world as you can).

You just try to realize that AT THE MOMENT the person you're writing chess engine for is your own self.
You just try to imagine that your engine is yourself. You said your health has limits... so you probably can't do things that other people can,
but your chess engine does not have those limits.
you just try to observe programming an engine like a practice to improve your own self.
May be your body is weak but your mind is strong.

So you just PRACTICE. Write code, rewrite, debug, share results, just don't rely on the outer world too much.
Do it for yourself. When you'll be able to change yourself you'll be able to change others, I mean help others.

Everything is gonna be fine, man, you just keep working and don't give up and if you gave up - rise and start again and again.

P.S. Chess engine is a big task, you can set simpler goals like write isSquareAttacked() function completely on your own or generateMoves()
when you have stable building blocks you can rely on this motivates to proceed every next step. You can check up my chess programming channel for inspiration, especially the very first series: https://www.youtube.com/watch?v=rrLZVaQ ... 4FZgw5Ior0
JavaScript chess engine with UCI support, own GUI and public API:
https://github.com/maksimKorzh/wukongJS

Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ

shinkarom
Posts: 64
Joined: Tue Nov 19, 2019 12:26 pm
Full name: Roman Shynkarenko
Contact:

Re: Delimiter development diary

Post by shinkarom » Thu Dec 24, 2020 4:02 pm

maksimKorzh wrote:
Thu Dec 24, 2020 2:56 pm
How would you describe a man who likes the "programming" part more than the "chess" part? I don't care that much for chess itself, more because it's not easy to wrap my hand around the openings. I just like having my own AI. And my passions (that is, what I dream to create) are compilers and operating systems.
Regarding donations. I repeat that I didn't seriously expect anyone to give me money. It's just if I was going to wait till I write something good before uttering the oft-quoted line, I'd never have a chance to use it at all.
Konotop I did write for myself, from scratch. Now I'm too tired to start the same grind again for the third time. Better to have a base to build on.

User avatar
maksimKorzh
Posts: 525
Joined: Sat Sep 08, 2018 3:37 pm
Location: Ukraine
Full name: Maksim Korzh
Contact:

Re: Delimiter development diary

Post by maksimKorzh » Thu Dec 24, 2020 8:03 pm

shinkarom wrote:
Thu Dec 24, 2020 4:02 pm
maksimKorzh wrote:
Thu Dec 24, 2020 2:56 pm
How would you describe a man who likes the "programming" part more than the "chess" part? I don't care that much for chess itself, more because it's not easy to wrap my hand around the openings. I just like having my own AI. And my passions (that is, what I dream to create) are compilers and operating systems.
Regarding donations. I repeat that I didn't seriously expect anyone to give me money. It's just if I was going to wait till I write something good before uttering the oft-quoted line, I'd never have a chance to use it at all.
Konotop I did write for myself, from scratch. Now I'm too tired to start the same grind again for the third time. Better to have a base to build on.
Without seeing the work of that man it's hard to say.
Can't find konotop's sources in your github?
Can you give me a link?
I want to test it versus WukongJS.
JavaScript chess engine with UCI support, own GUI and public API:
https://github.com/maksimKorzh/wukongJS

Chess programming YouTube channel:
https://www.youtube.com/channel/UCB9-pr ... KKqDgXhsMQ

shinkarom
Posts: 64
Joined: Tue Nov 19, 2019 12:26 pm
Full name: Roman Shynkarenko
Contact:

Re: Delimiter development diary

Post by shinkarom » Fri Dec 25, 2020 12:12 pm

Unfortunately, I deleted Konotop the engine when I saw the code being spaghettified again and realizing that I would need to maintain it all my life.
Now I'm converting xboard.cpp, but the work goes slowly.

abulmo2
Posts: 301
Joined: Fri Dec 16, 2016 10:04 am
Contact:

Re: Delimiter development diary

Post by abulmo2 » Fri Dec 25, 2020 3:20 pm

shinkarom wrote:
Sat Dec 19, 2020 3:59 pm
D programmers don't have enough chess engines to work from. I figured having a simple base will make it easier for others to create their engines.
I agree there are not many chess engines in D, but I have written two of them:
https://github.com/abulmo/amoeba
https://github.com/abulmo/Dumb
Dumb is a simple engine, with a material & positional (psqt) based evaluation, a simple bitboard chess representation and simple search algorithms. I guess it can be used as a base for others to create their engines.
I wish you the best with your engine.
Richard Delorme

shinkarom
Posts: 64
Joined: Tue Nov 19, 2019 12:26 pm
Full name: Roman Shynkarenko
Contact:

Re: Delimiter development diary

Post by shinkarom » Fri Dec 25, 2020 6:41 pm

Thank you for Amoeba.

Now, can anyone explain this function in the xboard.cpp file? Why is it a loop, why the understood move is not used anywhere...

Code: Select all

void readinmove(char *m)
{
    if(nopvmove(m))
    {cout<<"\nno pv move";return;}
    char *ptr;
    ptr = m;
    int prom;
    int c = 0;
    int flag;
    char move_string[6];
    while (*ptr != '\0')
         {
              move_string[0] = *ptr++;
              move_string[1] = *ptr++;
              move_string[2] = *ptr++;
              move_string[3] = *ptr++;
              c+=4;
           if(*ptr == '\0' || *ptr == ' ')
           {
              move_string[4] = '\0';
           }
           else
           {
               move_string[4] = *ptr++;
               move_string[5] = '\0';
               c++;
           }
          flag =  understandmove(move_string, &prom);
          //  printboard();
          if (flag == -1)
          {
             //cout<<"\nnot understood move "<<move_string;
           cout<<"\nnot understood"<<m;

             assert(flag!=0);
          }
          if(c>3) break;//fudge
        }
}

Post Reply