JBand
JBand | |
---|---|
Angband Variant | |
Developer | PaulBlay |
Based on | Angband 3.1.1 dev |
Theme | Fantasy |
Download | Not yet. |
I am considering starting work on a Japanese version of Angband. The name JAngband was already taken, so I chose JBand.
Comments, questions and suggestions welcome in the talk page.
Planned Features
- Gameplay unchanged from 3.1.1 dev (and keep up with updates) (See Angband SVN)
- Source files in Unicode (UTF-8 with BOM stripped would seem to be sensible).
- Freely switchable between Japanese and English during play.
- Utilize C++
- Code to be easily accessible by programmers.
So why Unicode? While nasty things(tm) can happen whether you are using Unicode or not Unicode is the future, and Shift-JIS or EUC-JP is definitely the past. So the the reward in the long term for learning how to overcome Unicode related problems should be greater than that for Shift-JIS or EUC-JP.
Why freely switchable? From my experience with other multi-language games bugs creep in because it is awkward to do proper testing in both languages. This should be alleviated by allowing switching between languages while the game is still running.
Why C++? For the purely selfish reason that I would like to learn the language. I am also hopeful that C++ features should (when I'm familiar with them) make multi-language support more transparent.
What do I mean by "easily accessible"? Well, I don't want to put off people from developing games based on this or borrowing code. If all the text in the code is replaced with stuff like _TXTSTR123456 I suspect people won't want to know about it. So I think having both languages in the source code would be best (even if it's not good practice). Also it should "fail safe" when one language is missing - instead of grinding to a halt with an error message (e.g. Show text from language version that is present).
Problematic Points
- Many compilers will not work with Unicode source files. (Dev-C++, for example).
- Unicode file format differs slightly between Windows and other platforms.
- I know even less C++ than I do C.
- File size and memory usage will undoubtedly go up a lot.
Progress to date
- Changed *.c and *.h to Unicode (UTF-8). Still compiles with VC++, no longer compiles with Dev-C++.
- Minor code changes to remove very many compiler warnings.
- Remove BOM from source code files.
- Now compiles as a Unicode program. Can't actually play it yet though.
Next to do
- Compile with C++ (and fix errors that arise).
- See if it compiles in Linux.
- Code changes to remove compiler warnings in Linux.
- Code changes to allow the *.txt and *.hlp files to be in Unicode.
- Code changes to support both Japanese and English text in data files (monster.txt, etc.)
The Impossible Dream
I think it would be neat if the trunk of Vanilla Angband was used my work to better support multiple languages. I don't think that will ever happen, though. :-P
See also
AngEdit
As a side project I am attempting to develop a utility to load/save and edit the text files found in lib/edit. Could be used to add new objects, edit monsters, etc. (You can edit the text files directly but, in theory, this way should allow more safety checks, etc.)
SQLite
AngEdit makes use of SQLite 3 for the database functions. SQLite is public domain and is used as a plain .c and .h file included in the project itself, so there are no external libraries, .dlls or separate distribution / installation to worry about.
I will be using AngEdit to get used to SQLite with a view to making use of it in JBand (or not).
Platforms
Unlike JBand I intend to have AngEdit support multiple platforms from the start. As such I am looking into various multi-platform libraries like wxWidgets and SDL. Which (if any) I use in the end will depend on my experiences in working with them.
Initial impressions are that SDL is the easiest to add to the compile environment, but wxWidgets has much superior functionality (if I can get it to work).
Compiling
Currently there is "main-win.cpp" and "main-sdl.cpp".
main-win.cpp : Compiles with VC++. Need to set /D_WINDOWS C++ compiler command line option.
main-sdl.cpp : Need to set "/D_SDL". Currently tested with VC++ but not yet with other compilers / platforms. Need to add SDL include libraries (with VC++, in Project->Properties->C/C++->Command line add "C:\RL\SDL\SDL-devel-1.2.13-VC8\SDL-1.2.13\include" to the include directories).
main-wx.cpp : Not ready for testing yet. Need to set /D_WX.