Creative Projects / Sharplike: The Open Roguelike Library (version 0.4.0 released!)
« on: June 04, 2010, 04:56:53 pm »So I recently started mucking around with writing a roguelike in .NET, and to save me some time I went and eval'd the various C and C++ toolkits that I could import into .NET and work with. It came to little surprise that they weren't user-friendly at all in their native languages, let alone in .NET, so I decided to start hacking together something that was more .NET-focused.
The first "real" release of Sharplike is prepped and ready. You can check out our full feature list at our RogueBasin page.
You can download Sharplike 0.4.0 here (4.3 MB). Documentation is still a little lacking; if you need assistance, you can visit our Sharplike discussion forums in our issue tracker. Or, if you'd like to be kept up to the minute with Sharplike development, you can SVN checkout straight from our trunk at:
http://opensource.edropple.com/svn/Sharplike/trunk
Hope you like Sharplike!
Questions/Comments
Why a new roguelike library?
Because the ones I've seen out there aren't very good for what I wanted to do. You design and implement .NET code differently than you write C or C++; the different structure leads to different semantics. You can pull in C libraries into .NET, but you have to do all sorts of ugly screwing around to make them work. Sharplike's intention is to provide similar features, within a conventional and user-friendly object model and while doing as much code as effective performance allows inside of .NET.
What about Linux and OS X?
Sharplike targets version 2.0 of the .NET Framework, and as such should run fine on any 2.x branch of the Mono Framework on OS X or Linux. I make no claims that it will do so, but I'll look into bugs related to running it on those platforms if any come up. I do not actively test in either, but I am intentionally concentrating on writing very cross-platform CLR code.
For developing in Mono, I hear MonoDevelop has made great strides; I've never used it.
Are you planning for any other platforms?
If MonoTouch hadn't gotten ganked I'd be targeting that. As it is, I'll evaluate MonoDroid when it hits and see if I can do anything with it.
Do I have to use C#?
No. In the near future I'll be adding VB.NET, IronPython, and F# projects to the Tests namespace to demonstrate using it in other CLR languages.
Building the solution is complex. Any way to make it simpler?
No. Unfortunately, I don't know how to better deal with VS2008 and VS2010 using the same codebase. Hopefully OpenTK releases an updated Build.exe fairly soon that can generate VS2010 project files, to cut down on the screwing around.
If you are on Windows, I strongly recommend upgrading to VS2010. Even if you own a copy of VS2008 I'd go and get Visual Studio 2010 Express; it's that good. Also remember that if you're a college/university student, you can get a ton of Microsoft tools and operating systems for free through MSDN Academic Alliance (if your school participates) or DreamSpark regardless of your school's MSDNAA status. VS2010 is absolutely awesome, and well worth it.
Why doesn't it have <function that other roguelike library has>?
One of two reasons. One, maybe I didn't need it or foresee needing it. Two, maybe it's already in .NET. Like, I'm not going to have a libtcod style "configuration parser"--System.XML is good, XML serialization is already built-in, and you can use Nini if you want INI-based files (or a different style of XML parsing). I'm not going to have data compression, because SharpZipLib is already right out there available. I'm not going to reinvent the wheel--I'm going to build useful abstractions for roguelikes, where they are applicable.
.NET is slow, blah blah blah
Not for my purposes (and, for anyone who isn't writing Dwarf Fortress, probably not yours either). You're welcome to use libtcod or whatever else you want.
Mono, Novell, evil, RMS says so, blah blah blah
Don't care what RMS says; this thread is a No Freetard Zone. Got it? Thanks.
What is the license of the code?
It's currently licensed under the Common Public Attribution License (CPAL), version 1.0. This license is a derivative of the Mozilla Public License. It is not GPL-compatible; it is compatible with linked LGPL libraries. You can read the full text of the license here or a simplified (but not legally binding) explanation of the license here. Make sure to read the MPL page to understand your rights and responsibilities when using CPAL-licensed code.
All dependencies will always be CPAL-compatible, and usable in closed-source code (CPAL makes no claims on your code, it can be under any license as far as CPAL is concerned--the problem is that the GPL decides that CPAL is incompatible with it, not the reverse). OpenTK is X11-licensed.
Will you relicense it for me?
I'll consider relicensing under the CDDL or MPL if asked; I will not relicense to a GPL-compatible license. This is not up for debate; if you really care you can PM me for my reasoning but it's not a topic for discussion here.
Why do you hold the copyright?
Simplicity. Me, Karantza, and Total_Meltdown are all good friends, and we intend to transfer copyright to our game dev label when we incorporate it. I'm a little more knowledgeable and conversant with the ins and outs of copyright, and it was my project idea to begin with, so I'm holding it.
I'd like to contribute, how can I do that?
Drop me a PM here on the forum, and we'll talk. I'd be happy to have some help. Disclaimer, though: any contributions will require assigning copyright to me personally for now, and our game startup once that launches.
Contributors
- Blacken
- Karantza
- Total_Meltdown
Any feedback or suggestions are appreciated.