Author Topic: Another turn of the crank on the VB version?  (Read 4204 times)

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Another turn of the crank on the VB version?
« on: August 01, 2007, 01:20:40 PM »
Hey all.  Yes, I've been working on my book.  It's going well.  I may post a chapter or two here at some point.

I'll be able to spend time again on DB towards the end of August.  Would people be interested in seeing some more work done on the VB fork?  I see there are a few bug reports and suggestions...  Perhaps I'll do some easy things on the VB fork, drop a point release or two and in parallel, spend some time on the C++ port....

Has that gone anywhere?  I see there has been some good thinking on new algorithms, physics, etc.   But the essense of my question is "Has any real effort been expended on a straght accross C++ port of a snap shot of the 2.43 VB fork?"  If so, I would not want to obsolete that by taking the VB fork forward...

Nice to be back...
Many beers....

Offline googlyeyesultra

  • Bot Destroyer
  • ***
  • Posts: 109
    • View Profile
Another turn of the crank on the VB version?
« Reply #1 on: August 01, 2007, 01:44:57 PM »
I have no clue whether or not the C++ version is in active development, however, not applying bug-fixes to the "official" and most widely used version is rather silly. I'm pretty sure the C++ version is going to develop somewhat different bugs, so bug fixing this one shouldn't obsolete the other (which is already obsolete, I might add).

Oh, and pretty pleases fix the bug where infoshots, ties, and venom can insta-kill by shooting 32000 into mkshell, strpoison, etc. It really discourages interesting tactics, because they don't develop. Both bots die within about 2 cycles.

Offline Jez

  • Bot Overlord
  • ****
  • Posts: 788
    • View Profile
Another turn of the crank on the VB version?
« Reply #2 on: August 01, 2007, 04:37:41 PM »
Eric! Nice to see you drop by again; I look forward to an update on your book's progress or the chance to read some of what you have written.

I think the C++ port has been dropped in favour of a C# port as re. the quote of Num's here; http://www.darwinbots.com/Forum/index.php?showtopic=2109

Would be lovely if you could fix a couple of the problems that have been identified in the meantime, tie feeding not working properly in particular.

Very pleased to see you back...
If you try and take a cat apart to see how it works, the first thing you have in your hands is a non-working cat.
Douglas Adams

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Another turn of the crank on the VB version?
« Reply #3 on: August 02, 2007, 02:33:38 AM »
Instead of a port, I'm thinking of a sequel.  Take existing ideas that work, trash the ones that don't, and rehash it into an architecture that grows easily.  Pull code from the C++ and VB versions as necessary.

The C++ source at present is a bit sloppy.  It wouldn't be markedly easier to maintain than the VB version.  I've been doing a lot of reading and research the last year or so, and I think I can devise a system that grows well.  There are two primary ideas I've experimented with that have worked very well.

First, This thesis paper explores various architectures that developers could use in games, and proposes what's called a "system of systems".  Basically the data is stored in a central repository, and various modules (physics, DNA execution, save/load routines, etc.) operate on this data.  I worked on a smaller project that used this design, and it worked quite well.  New features are usually easy to add because the interdependency between modules is so low.

Second, Unit testing was very useful in another project.  I was working on a GUI library for a 3D engine, and built it using unit tests from the ground up.  It's extremely useful for isolating, reproducing, and preventing bugs and catching pathological test cases.  In a program that needs to run flawlessly for hundreds of hours, like Darwinbots, I think using a lot of unit tests from the start will prevent a build up of weird errors that are hard to pinpoint.

Following the two above, I'd like the major subsystems (DNA, physics, etc.) to have their own separate sandbox programs, unintegrated with the other systems.  The DNA language could have a command line interpreter like Ruby does with irb.  Physics could have a series of simple interactive demos.  That way different programmers could work on seperate systems relatively easily, and there would be some simple programs new users (which would be practically everybody) can play and understand what's going on.

And last, pulling from SCRUM, I think a stable release every month, starting with something extremely basic, is a good way to go about it.  Start with an empty interface, and add features iteratively.

I'm about half and half on using C# or C++ with different libraries.  There are aspects of C# that lend itself very well to what Darwinbots can be, and there are also some details which I find maddening.  Also, C++ generally has 3rd party libraries I'm more pleased with than those available for C#. I'm also evenly split on whether to build our own physics engine or use a 3rd party one.  I've been doing a lot of research into physics engines, and the more I learn the more I realize how specialized Darwinbots is.  I think a streamlined, simplified engine would give more aesthetically pleasing results.  I know enough to program the system I want, I'm just not yet at the point where I can make it fast enough.
« Last Edit: August 02, 2007, 02:37:28 AM by Numsgil »

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Another turn of the crank on the VB version?
« Reply #4 on: August 02, 2007, 05:59:24 AM »
Cool  

Wish I knew more so I could help. Been taking a look at different sorts of compiler languages/programs to see how the others do things. Ran into something called Scratch had an amazingly easy drop and drag system to build programs. Somthing similar would make it radically easy to design bots.

Should start up a general list of stuff everyone has seen working in DB. That way people can say what they think of the different features.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Another turn of the crank on the VB version?
« Reply #5 on: August 02, 2007, 12:10:51 PM »
Okay, two things.

First, I take it that turning the crank on a few more VB versions isn't going to mess up anyone's effort in snap shotting the code for a port, so I will likely re-enguage on the VB fork in early September.  I'll fix bugs, implement suggestions that pass the feasability bar and add a few other features.  Magintude of stuff will be like before - nothing seriuously architectural or earth shatterring, but small to medium enhancements are likely.

Second, we've discussed this before Nums, but you and I differ in our opinions about how to move off of VB.  Let me say first that I agree whole hearily with your comments regarding code structure.  Compartimentalization and polymorphisim are great things.  Being able to unit test and have multiple developers working in independent modules in parallel is wonderful.  I am all for moving the code (in any language) towards a more modular underlying architecture.  But that is somewhat orthoginal to the larger question of moving off of VB.  You advocate the more radical "revolutionary" approach of breaking with the past and essentially building a new system from scratch, re-using code where applicable but making no real effort to preserve backward compatability, continuity of sims, etc.   I advocate the more evolutionary approach (pun intended) of a straight accross port of existing code and function prior to any radical changes, be they code architecural, physics architectural or feature related.  I would suggest that a good first goal to shoot for takign my approach should be that all 2.43 sims and bots should work well on any ported code prior to any work being put forward on enhancements or changes in underlying code architecture.  (Yes, you will need to change some things due to language differences, but these should be kept to a minimum until stability on the new language has been acheived).  I have some expereice in language ports and while it may not seem that way, IMHO the incremental approach gets you there faster without loosing your audience.  It's just easier not to try to port and re-design or re-architect at the same time.  You port, you stabilize, then you re-design or re-architect, one or two modules at a time.  IMHO, the investment we have in the VB code w.r.t. stability, features, bug testing, etc. should be leveraged to the maximum extent.  Old discussion.  Not urgent it would seem.  Could certainly try both paths at the same time.  Not going to settle it here.  Enough on that.

Give me a few weeks to play in the sun while it lasts here in Seattle and then I'll start work on a VB based 2.44.  Suggestions and bug reports in the appropriate forum welcome.  I will look through prior posts.
Many beers....