JF https://www.javantea.com/page/make/261

Update: AS3D Collision Works works! I spent eight hours today trying to find the problem. I finally found that the inBox wasn't working. Wtf? I messed with it and I did this:

inBox = (x<=x1 && z<=z1) ^ (x<=x2 && z<=z2); This is not the inBox function. The inBox function goes like this: inBox = (x<=x1 ^ x<x2) && (z<=z1 ^ z<z2); The difference? Insanity vs. sanity. The funny thing is that I have done this function a dozen different times. I even double checked the equation and it looked right to me for some stupid reason. Eight hours I looked through my code to find that. I've been up since 7:30 AM (it's 1 AM now) and I was up until 3:30 AM last night. Can you say endurance? It's called the I love programming syndrome and my lifestyle permits such extravagant lack of sleep. But if you think my hair is going to turn grey, don't worry, I make up sleep on weekends. I usually get 10-14 hours of sleep on the weekends. Since I got KDE 3.1 working (complied in ~12 hours using Konstruct), I've been using the multiple background thing cycling the System Shock 2 maps (that I hacked from intrface.crf on the CD) every minute. It really give me hope seeing that my Collision Works can almost do what System Shock 2 maps can do. To create the model, all one has to do is to create a polygon which characters are restricted into/out of and name it Room_#, connect it to other rooms using polygons named Door_#_# and it's done. I even believe that AS3D collisions will be far faster than BSP that SS2 used. AS3D Collision Works doesn't support multiple levels, so it's a bit behind BSP, but it will have it, I am certain. I did a bit of arguing with myself and I worked out all the details for extremely fast collisions. I'm even thinking that a few dozen walls per room, hundreds of rooms, and a hundred objects per room would not be too hard for AS3D Collision works. Of course, that might be a bit big on RAM. Each object is 4 floats (vPos, r). Each wall is six floats (v1, v2). (24*6+100*4)*100*4= 217 kB. Not bad. The cool thing is that it is very fast. Once I implement room checking (it will only check the current room and its doors) it will be extremely fast even on maps with many rooms. The idea is when the person is moving, we check for a collision (using a very fast position/velocity algorhithm with no trig() and no sqrt() ) until we find one. When we find one, we stop it and don't check for a collision until they press a key. I haven't stress tested it or optimized it yet, but as soon as I make a fewbig maps, we'll see, won't we? This just goes to show that I am an amazingly persistent programmer. I will stop at nothing to r0x0r up JF, AS3D, and Hack Marks. Maybe the next thing will be 3rd person camera/person movement with animation. That's definately not in the range of Manga Director, but certainly within the range of Anime Director/Producer and Hack Mars. See the last paragraph if you want to know my *clandestine* plans. ^_^


Okie dokie. I've been really weird about Making of JF lately. I have been writing these huge monologues but not posting them. I just posted two in one day and I'm writing this now. The main reason for this is that AltSci3D is progressing very quickly. How quickly? I just compiled AS3D into a static library. It is beta as usual, but I really have faith that a person with limited ability could write a program with the AltSci3D engine. There is so little left to chance that it is really nice. But since it's C++ and I built it correctly, it's flexible enough to give the person full control over the models. I am confident that in the next year, I will be able to write a full 3D RPG (Hack Mars, if you haven't kept up with JF) with it. I have already written two programs in five days with it. It is now portable since it uses the SDL library. It is native to Linux, so people who are normally open-source will be happy. I see good things in the future for Linux Games. Native games using the robust SDL/OpenGL engines will make good sense for professional programmers. Adding a faithful following for your game in the Linux market will not only be advantageous, but vital for games in the next few years. If your game is not native Linux or ported side-by-side, it should at least be compatible with Wine. AltSci3D will be one of the many pioneering engines of this shift.

But let's not forget the role that Manga Director will play in Linux development. Being native, it will be a tool that allows artists to pick their platform freely. While Blender or another Linux modeller has still yet to take form, it will not be long until AS3D will support it. Since Manga Director like AS3D Engine will be free and open-source, it will give a boost to 3D Manga. Why am I open-sourcing both of my products? Because I have a third and a fourth product. In fact, I have a fifth and a twenty-eighth product, too. Remember that Javantea's Fate and Hack Mars are the reason why I wrote AS3D and Manga Director. Neither of those will be completely free, sorry to say (JF is free for now since it's new and not popular yet, but when I have a following (~Scene 7), expect a small charge ($5 per 128 pages) for the high quality version). Ayn Rand would say that I should definately charge cash (or rather gold) for Manga Director, since it is a product of my suffering. However, I feel that my needs will be met better if I don't have to spend time on the business side of AS3D and to spend more time on the development side. I'm a programmer and a physicist, after all... If I can get help from other open-source developers working on it, it will pay for itself by making JF and Hack Mars better. If JF and Hack Mars are better, more people will like it better (better for you), and they will be willing to pay (better for me).

Enough wishful thinking. What did I get done today? I got quite a bit done for Collision prediction/detection/response. It actually works 10% of the time at this point, so with some more work it'll be done. 10%? Yeah, it's really acting weird. That's how it goes, I guess. That's always how it works. Some of the toughest problems only took an hour each. Usually they take days that turn into weeks, so an hour per problem is no sweat. But having ten of them makes my day long. I did my laundry and my Electromagnetism homework on top of that, so my day has lasted 10 hours and will last four more. Yesterday lasted about 20 hours. Amazing, really. I believe that I have actually pulled off 160 hours in two weeks, 80 hours per week. 160 hours is a month's work. Don't you wish I worked for your company? It's interesting to hear programmers talk about the man month (which I what I did in the last two weeks). It is simply 4 weeks*40 hours/week = 160 hours. I worked average of 16 hours per day for 7 days straight. Last week was a bit more relaxed due to classes. Some act like working every waking hour is beyond the limits of human possibility. Of course, it may be beyond the limits of computer possibility, since one of my two-week man-months this summer destroyed two computers (which were orginally in working order, the cpu popped). To achieve this, I used: ~80 hours of techno/alternative music, headphones, two liters of water per day (no caffeine), 256 up/down DSL, noodles, tofu, rice, frozen vegis, 8 hours of DVDs (I watched during meals and while I worked), alarm clock, 2 reboots (thanks to Linux stability), and most important of all: 160 hours of fun c++ programming to do. I know that many programmers do 50-60 hours per week, but I don't know many that do 80 more than once per year (or per impossible deadline ^_^). My father works all day and much of the night and has a huge wage. He still can't retire yet after 14 years. He spends only 10% of his income on entertainment. What is the problem? Quarter million dollar house, suv and van = 35% of his income. 50% of his income goes to the government. That leaves 5% of 175k = 8750 per year for his Microsoft stock. And you wonder? How much does a person need for retirement? It's getting up to $2m for him. I decided when I was 13 that I would not follow in his footsteps: working 10-12 hours per day for money that doesn't pay the bills. I would use my knowledge of science and a low budget (no car, no house, no kids) to ensure that I will never have to work when/where I don't want to and I would be happy and comfortable doing it. I've been living that three and a half years only due to loans from the gov't which I hate and from credit cards (which I don't hate) that want to skin me. It's everything I wanted it to be. I can't ask for more. I'm going to get a job when I graduate and I'll pay my debts and I will continue my dream.

Two and a half years ago I wrote JF as an idea of what I would become in 15 years. I added aspects of myself and whatever adventure was on my mind. My mind changed months after I wrote it, but I'm sticking with the plot because it's a good story even though it's a bit rough around the edges. But when I finish JF, I can start whatever else I want*.

*Unless my fans write death threats saying they want me to write more JF. Watching the comments on Evangelion was interesting, it told about how Death and Rebirth is to appease fans who sent Anno Hideki death threats. Sheesh, Evangelion was good, but extreme, no?

I messed around with a wavelet compressor just now. Getting it to compile to linux was as easy as switching all the stricmp() to strcasecmp(). Silly, huh? I compressed JFMo259 to wavelet and back and it came back correctly. My one wish is that it could input an actual file format rather than raw. It's kinda rough to make raw bmp files, huh? You just have to strip the first 54+256 bytes off a greyscale BMP using a hex editor. I used KHexEdit for KDE 3.1. ^_^ The greyscale of that image compressed losslessly to 32.5 kB with wavelet, not bad. Compared to the same image in PNG (not apples and oranges, really) which is 20.9 kB. It's not that bad, right? How would it do on an RGB or a gourand shaded model? That's what I want to know. And how would the high-quality lossy compare to similar size JPG? And how would the low-quality lossy compare to similar size JPG? And how would the size of the low-quality lossy compare to similar quality JPG? These are the things I look for. When I test out the speex codec, I look for what it would be best used for. I compare it to 8 kbps 8kHz mp3, log coding, and ogg. The things that low-quality vbr Speex is bad for are: anything with a non-human sound (explosion, door close, beep, etc), mumbling, and screaming. The wideband is pretty good at these things and is pretty good at compressing them also.

Why am I messing around with Speex? I have two purposes. The first is dubious. You see, the most secure form of encryption is obscurity (obsecurity). If the NSA doesn't download the open-source speex codec and manually open it up and listen to it (their voice detectors don't work with terribly low quality stuff, so humans are used). If I wanted better encryption, I'd make my own format that was unknown and undocumented, extremely hard to understand and use. Or I could just encode it in an early beta of speex that is unsupported by the release candidates. I wouldn't publish the source and I would encode it right from the sound card (perhaps even bypassing RAM). I could publish as much as I wanted of the encoded audio and no one would ever be able to hear it but me. PGP, ha! But what use do I have for audio that I have to speak into my mic to be strong encrypted? Wouldn't you like to know. ^_^ Funny that I'm saying all this on an open channel, right? The reason is quite odd: I have nothing to hide as long as my voice is free.

The second reason I'm using Speex is because it is perfect for Hack Mars. Hack Mars will not be about bombing, shooting, punching, kicking, or even ordering soldiers to do such. While most games are about exactly these things, Hack Mars will be about talking and doing. The player will create, talk, work, and do positive things because the player will be a hacker. My friends' eyes went buggy when I said that there isn't any shooting. The idea of a game that lacks large-scale murder is not in their normal taste. But DDR lacks murder and is a hit. Flight sims lack murder even if you pull a sep 11. Race car sims lack murder even if you crash into your opponent at over 200 MPH. Even though many people feel sports are violent, sport games lack violence entirely. Many adventure games lack murder, too. But if you lack murder you need some other quality. You need a story line or puzzles or action. Hack Mars will have a story line and a bit of action. It will have goals that are kinda like puzzles. It will hopefully have have five to ten hours of audio in the form of electronic music and speech. The plan right now is to have it be downloadable. If I use speex for 8 hours of speech at ~4-8 kbps, it will be... (8/8)*60*60*8=14-28MB. Of course, it's 8 hours, so if I can do something like a content on demand thing, it will work perfectly for low-bandwidth people.

You're probably thinking: get the engine done first. Well, that's true, but with the introduction of a stable collision system (~5 hours), Hack Mars' program is 60% done. When I finish full tar.gz support (~2 hours), I can call it a stable, functioning engine. When I add character control, scripting and simple AI (~5 days), it will be a robust 3D engine. When I compile it under Win32 (~2 hours since the code uses libSDL), it will be a portable engine. When I add Speex and Ogg sound support (~2 days), I will have everything for a simple game. I'm thinking that adding python scripting is the next logical step after that to make Hack Mars, since it will be story-based with missions (but also gives the player free reign on what to do). That will take about a month, I suppose. When the engine is done, I just need data. I have the JF models and adding to that would be good, but really they all just needs animation for a decent beta. Then I can write the script (still not even a 1/4 done since it's a huge project and is behind the engine in priority). Then I add sound and speech. I'll need to hire someone for voice-overs, so that will be a task. If I can actually use my summer wisely while I have a well-paying job, I can do it. Of course, that's what I said about JF last summer, but I used it very poorly (mainly looking for a job... grumble, grumble). *shrug* So Hack Mars is taking off. The collision system has nothing to do with Manga Director, so I'm officially working on Hack Mars starting 02/19/2003 with only 10-20 hours spent on it before this time. Of course, if I count that, I am counting having spent thousands of hours on JF, which isn't a spectacular use of time.

Permalink

Comments: 0

Leave a reply »

 
  • Leave a Reply
    Your gravatar
    Your Name