No. At least, probably not.
This is a very frequent case of reinventing the wheel is game development, a mistake that is still quite popular.
If you're asking this question, you're very likely to be influenced by what others do, so just look at what Epic Games just did with the Unreal Engine:
- UE3 had a custom, weird, non-optimized, hard-to-debug UnrealScript thing,
- If the rumor is true, its support is being removed in UE4, in favor of hot-reloadeable C++ DLLs.
Do you think you can do better than Epic?
Creating progamming languages belongs to programming language creators, not game engineers.
It takes years and years for a language to become fully mature, and its accompanying toolset (compiler, linker, interpreter, debugger..) usable. Nowadays you have a lot of available solutions at hand so there's absolutely no real reason to start a new thing from scratch, at least not if the goal is simply to make a game. Period.
To answer your side questions, no, for these very reasons I've never implemented my own scripting language. But I've suffered a lot with some half-baked ones. Because they were created with a very narrow feature set in mind, they always had this little insane quirks that make you crazy. Often, you'll find yourself spending an awful lot of time just trying to work around the language's limitation instead of just making your game.
If the reason you want to create a language is because it is intended for use by people that don't know programming very well, or if you believe you need it because you want something very domain-specific, let me tell you these are also bad reasons. You can write a very high-level API with functions that do_what_they_say_and_say_what_they_do()
, and some very simple boilerplate code that exposes its basic usage. Your not-so-technical users will be glad to learn a bit of programming, and you will be glad not to be limited by some badly implemented language.
So, as this will sound a bit abrupt or even harsh, I'll say that there is one case where it could make sense: if you want to learn how a scripting language is made. But please, please, if you do so: don't force others to use it.
Edit
I just had a look at the Cave Story command list you've linked. Ouch:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
I don't want to show disrespect to the developer behind Cave Story, but this is a perfect example of a simple command list that mutated in a uncontrollable custom scripting language. This might be still usable for a single developer or a very small team, but at this stage I advice to switch to a proper Turing-complete and well-tried language (e.g. Lua), where you could do:
if (npc.id == x) then
jump_to_event(y)
end
This will make things so much easier when, for instance, you'll need a more complex condition:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end