JF make 256
JF Nav
JF Nav
Creation Date: 2003-02-09
I missed the last few days of Making of JF because I'm just being busy. What so busy? Huge changes to AltSci3D Manga Director and the errors that it generates. Did you notice that this page is the 256th Making of Javantea's Fate Page? To celebrate my overflow into the 16-bit unsigned integers, I'm opening up the source to the beta of AltSci3D Manga Director. Open Source people should be happy about that. In fact, I'm opening it up in this very page!

AltSci3D Manga Director 0.9.2 Linux Source + Binary
AltSci3D Manga Director 0.9.x Linux Data

For the whole story, check out the Official Site

Right now, there are only Linux binaries/source. It does not use portable libraries* (GLX and Xlib), so cannot be ported to Win32 very easily. It'll take a while for me to make a Win32 port. I have the tools and the knowledge, just not the motivation and the time. If you really want it, I can see what I can do.
Manga Director will not be proprietary. While I lack programming and technical skills to orchestrate a major open source project, I can do my best to open the source to anyone who may be interested. The data files contain actual source files of Javantea's Fate. I hold copyright to JF, the models, and the textures, so do not rip them off. They are for testing purposes only. If you want, use your own ms3d files, it supports them (kinda). I am holding the AltSci3D Manga Director Source/Binary under Copyleft (you can use, copy and modify as long as you give correct credit and do not sell it). Any manga made with AS3D Manga Director can be used, modified, sold, without credit (while I would appreciate it) and without royalties. These licenses are subject to change during beta (to a clearer form of copyleft).

* I decided to use non-portable libraries (GLX and Xlib) because I did not like glut or SDL. Neither of them looked very good to me at the time and I had a structure ready for GLX anyway. There are wGL equivalents to GLX and windows functions for each Xlib function, so I could just do that. Or I could go with glut or SDL for Win32. I could even rewrite my Linux code into glut or SDL if I wanted to. But I don't want to. I just finished two huge program-level changes and I'm done until I want to add functionality.

So what can you do with Manga Director? You can make Scene 1, Page 7-8. That's what I plan to do. If you have ms3d files sitting around and you have a perfect idea, AS3DMD currently works almost well enough to work. The first quirk is that ms3d files lack proper filename formatting so textures will not load. Ugh, huh? You have to hex edit it (I used KHexEdit) to switch the .file.bmp to ./data/file.bmp. Make sure it's zero terminated and that you didn't add or delete any bytes to the file. It only takes a little while to get it right. The second one is that the paths are not dynamic. You cannot add cues during runtime. A cue is the basic denominator. In the first box of your manga, the person is at cue 1, second box is cue 2 and so on. You have to manually enter them into the ASD file in the data directory. You can do that by copying and pasting and then adding to the LinearCues: 7. A pain, right? It'll be working in a week or so. The next problem is that you have to move the cues with the camera. To grab a cue, you click on it. To move it, you move the camera to where it should be, and press the 'm' key. It takes a while, but it works for me. The drag and drop should be implemented in a month if I ever fix it. It's a bit messed up. Besides those collosal problems, it's buggy. It's not extremely buggy, it's just buggy. Beware. But it's stable on my machine, so don't be too frightened. E-mail me at jvoss@u.washington.edu for a good time at the console.

So what did I learn in the last five days? Very cool stuff. The first was the use of a global header for functions used often. I've never used one before because I always code at the system level (ie. fscanf("%i", &iSize); or cout << iSize << endl;). But using the c++ iostreams, I found that it was wasteful to repeat a series of commands rather than just call one function again and again. Anyway, I have this global header. I call it AS3DUtil.h and I include it in everything. Bad idea! I got about 500 link errors saying that I have multiple definitions of these functions. Why? Because I included a header file with cpp code in a dozen cpp files linked together. You don't do that! To solve it, I just made a header file with prototypes of the functions and then a cpp file which was compiled seperately using gcc -c. So from that, I kinda get a closer definition of what cpp files are and what h files are. You can only do a #include on real "file.h" files which can only contain structures and defines. Actual code goes into "file.cpp" files. I usually just put the class definition in "class.h" and the functions in "class.cpp" so that I can keep track of them. But if you want class to be used, you need a "class.h" with the class definitions to be included and a "class.cpp" to be compiled.

The second thing I learned just tonight is that not initializing your variables before you use them causes disaster. For example, I have this bit of code that says: int iLeft, iRight; char buffer[512]; iRight = iLeft+1; while(buffer[iRight]!=' ') { iRight++; } message = buffer[iRight]; So you can easily see that I forgot to initialize left. While this would run correctly in VB, C/C++ variables do not initialize to zero. In fact, they usually initialize to 139498412 or so... So when I try to check if buffer[139498413]!=' ', I get a Segmentation fault. Of course, if it were Windows instead of Linux, it would just hang or give a random GPF error. It took me about five hours of brain bashing to fix it. I finally fixed it by going into KDevelop and running their wonderful debugger. I'm going to use it a lot more often and I'm even going to use their IDE for a while, hoping I can get their funky settings to match my wants/needs. I like Kate because it's lean and mean. But KDevelop just has those things you *need*. Actual debugging, autoComplete, and shortcut keys to make, execute, etc. One button makes it, one button executes it. Instead of going to Kate's console and pressing 'up, up' to make and then 'up, up' to execute. If you have used Kate like I do, you know what I mean. I really love KDE, they rock. ^_^ I'm going to get 3.1 one of these days.
Home Characters Making Of Technical Mail News Links |< First < Prev Next > Latest >|  bandwidth version Goto Scene