Alvarian Tales Engine Log
yr 2000 to 2018
Jul 24, 2019
Today I have updated the GUI builder to work properly, removing the Convo interface from it, because it is so game specific.
Also I have modified the Soul obj considerable, allowing for stats and skills, to be added, removed, renamed, without having to change the obj size. In this way, halfway through the game, if I want to introduce something new, I will not have to rebuild the obj. (skill.archery.radius_base) for example, with plenty of unused skill slots available. also, stat(hp).val and stat(hp).max, where hp is a enum value.
New info about vertical zones was moved to another file. See a file with the same date in the engine dev notes.
Jul 23, 2019
Scene size definition is done, as long as it's used properly. Any flat object with behavior of "defines-scene" is part of a calculation to find out the start x,y of the scene and the width,height of the scene, so that that camera stays within those bounds. Decided not to use any zone to define it. Just uses the dimensions of each object to calculate. Works very nicely.
Jul 19, 2019
Forgot how much I progressed on the pathfinding months back. Returning to the project I've now installed a better-working scaling zone via pixel checking. It seems to work well (any more logically) to put the Red value of the object as the scale size for the object walking on it. Red 100 is 100%. Red 50 is 50%, etc. So a gradient red object is a perfect way to scale by percent, and seems to work quite fast. Being specific about which objects it effects and whether or not they need to be walking or just placed over that zone will be next.
For now I'm moving on to creating a behavior for an object that specifies the scene boundaries. This way, a background will have a zone which specifies this. By default it could be the size of the image. On the other hand, if the background is broken in peices (perhaps to save memory for very wide scenes), a single part of the background could have a zone that covers everything at once.
I stalled a moment because I was considering whether this feature should be considered a behavior. It seems a different nature than behaviors such as Ladder or Arrow, as it is not related to gameplay so much as engine behavior. Yet, if there are not a great many engine sort of behaviors, it may be just fine including it in such a list. Before I create too many solid scenes, I will need to have most if not all of these major engine mechanics in place, less I have to revise and then rebuild everything.
Feb 20, 2019
Wow, been awhile. Currently working on refining pathfinding for NPCs. I don't believe team mates will ever get off-screen, as I can choose to not allow it to happen. This way they also can use the FollowCam grid type for pathfinding. NPCs, especially aggroing, need a wider grid. I am considering giving them a 25% wider grid on only the side that you are on, so they can pathfind additional 25% off screen toward you. This way they have a better chance of not running into a dead end and getting stuck. (It could possibly be smart as well, if he does get stuck, switch the grid to the other side and see if the pathfind can complete itself toward a radius around its destination.) Normally a monster will be pathfinding to preset points randomly around a general area, so he does not need a larger grid than the camera window size (or even smaller.) But when you find him on-screen, and enter his sensing radius, he needs to be able to follow you even if you happen to get him off screen a little. he will continue to follow you using that 25% additional until perhaps a certain time has passed that you are outside his sensing radius, because he's following what he remembers until he can get you back in his clear sensing, or until he gives up. if there are not many dead-end sort of scene situations, the additional 25% may not be needed, because his grid is following him and will update as he moves toward the last place you were on his grid. for now i will code it this way and see how it works out.
Did some work and got pathfinding working for player and NPC, and the follow-obj grid is on the way to working well too. Now I am thinking of how to work out the battle function. But it's late and I will sleep.
Nov 7, 2017
There was some trouble I forgot about. When I condense the character sprites I can't layer the cloak or any clothing that is wider by even a pixel. And pre-layering the clothing before upload to card seems like the better option, over realtime layering. Realtime requires all the clothing parts stored on card as well. Besides that it doesn't solve any layering issues. I was actually considering having a fore and back part to each clothing peice, this way the shape of the body/shirt currently worn doesn't have to be cut out of the cloak for example. Legs and torso and head may actually have to be placed as an option rather than covered over by clothing if the body underneath is not completely hidden.
I did get sound and music turned back on. Using FBSound, version .2, I had .1 before. It's easy to use and I can't wait to put it into action. I noticed large WAV files load much quicker than smaller MP3 files. Loading time is more important than installation size so I may end up using WAV.
Nov 6, 2017
Well. Sprites can be condensed on sprite sheet without any trouble. When they are flipped horizontally the .ax point is flipped too so everything lines up. Saves at least 40% space in some cases.
I added beetle walking animation, and riding on it. Also drawing back an arrow on a bow. Did some good drawing of a crab and lightning striking him. Now I am thinking of realtime layering again. The reason being this: different animations happening simultaneously from the same object. You see pre-rendered layers makes sense until you need the beetle to be either walking or standing still while you are either drawing a bow on him or just riding him. Of course you can have two objects, beetle and Arian, and that may very well be the better choice. Same goes with rowing a boat. I guess it will depend on what the story and gameplay really calls for. That's what I don't know, so I can't make a complete decision as to graphics handling yet. I don't know if I want you to be able to change just a shirt, shoes, belt, hat, hair style, or all of those, or strictly only an entire outfit at once. For now I will stick to a basic outfit and as the story progresses I will feel the need to do one thing or another.
Been on the FB forums a bit lately. Got some help from Paul Doe in Argentina. He's been helpful and friendly. Posting and reading has probably wasted a bit of my time. But it has been interesting and fun. People are generally impressed and interested in my project. And they don't even feel the potential that I do. It means that I am on a path of developing something quite good. I just need to define my goals and break them down into steps. Also need to flesh out my story and characters. Besides that I want to add sound fx and music, not because it's crucial right now, but because seeing at least a slice of game where everything works together beautifully will inspire me to continue. I want to see a little piece of it alive and breathing - the game truly being as I always wanted it to be. The REAL THING. It's like when dad and I painted one side of a house at a time. We finished it to perfection and it was so sweet to have accomplished it that we pressed on to the next side. This is the reason I do things this way. I might even post about it.
Oct 25, 2017
I am the BOMB. I recently changed glVertex2i to glVertex2f, which takes a float value, within my sprite_multi. Together with going back to Single for the x,y coords of objs, powerful new feature is available. Smooth scaling and movement when needed.
Speed of movement is still based on Cycles, not the single value. But NOW, since it's Single, there is sub-pixel percision when needed. Before, when scaling the sprite, it was jumping around because it was being aliased to the pixel. So basically even though the game resolution is low, scaling and placement can be done at the true resolution, off-pixel, to create fluid effects. Some minor scaling of characters for depth is technically cheating but pixel size changing is hardly noticeable, and the scaling looks awesome, because my art is scene-based and always has some depth. Major scaling from miles away is always possible and fluid now, such as the rowboat coming near to shore, but it does look more obviously cheated as far as resolution. However I'm willing to make that trade for the occasional scene because there is no other way to do such distance scaling. If doing via pixels they quickly become garbled and ugly. I'd rather cheat and keep it looking nice. This is a game that maintains the spirit of classic pixel games, but has a few hybrid qualities that enhance more than detract. I'm loving this!
June 1, 2017
A few small improvements on editor like panning with the arrow keys, and only drawing objects within camera area (corrected.) Also allowed objs to be locked so they cannot be selected, mainly for large background images that don't need to be selected when editing the scene. Learned of the 16:9 resolution, most common one at this time, and all the various versions like 1920x1080, happily my drawings fit nicely at the 256x144 res and that scales evenly to any 16:9.
Soon I will be testing out the walk zones again and decide whether I want to use only those, or mix with nogo zones, so objs can scale at a distance, be slowed down, pushed around, or whatever. might just use separate zones for some of these things since i probably cannot do them all just using RGBA values.
May 30, 2017
In wee hours of the morning I had a dream. It was the solution to the .Move() function. I woke up for a few minutes and verified if it actually made sense or just dream sense. I thought it over and it was clear that it should probably work. Made an effort to remember the key logic and went back to sleep. This morning I have just coded it, and it worked the first time. The most important aspect, to keep explanation simple, is that x and y delay must be cycled together, or synched, before a pixel dodge can take place. So CheckBothCycles was put in. Took about a half hour to write the code; compare that to a few days of tinkering around. So glad it's done. Best code I've ever had for this function, and it allows other objs to pixel-dodge the same way.
May 29, 2017
Been working for a few days on just the .Move() function alone. Came up with some ingenius pixel-dodging that is faster and uses less code. Also got x/y delay to work except when pixel-dodging. Unfortunately this means you can slide down a long angle much quicker than you should be allowed. I think I had it working perfectly before I realized that the Dest function was suddenly useless because it relies on a Single x/y rather than Integer. And yet it seems to work with integer too. I'm dizzy with all of this. Can't get it working right.
May 21, 2017
Improvement on pathfinding and cleaned up some unneeded code. Animations don't jerk when walking through a blocked cell using arrow keys (effectively it was calling the path broke and setting animation to stand.)
Issue now: Allowing both keys and mouse pathfinding creates little problems of either getting stuck on edges or being able to pass through nogo zones. One or the other will probably have to be decided on.
Also putting together the bridge scene and seeing what it takes to make the images layer nicely. The bridge requires several pieces because it dips, but the clothing can slip between these pieces. Unsure how to avoid that unless the boundary scoots you into a position where you will not layer wrong with the neighboring piece.
Piddling about all day, that's all I can recall. Fixed up some code here and there, but the time it took was ridiculous. Like four hours for almost nothing, and a couple more hours until I finally arrived at a solution to some minor thing related to the editor selection group.
I had so much expectation today. Took all kinds of stuff, nothing helped all that much. Maybe a little, maybe briefly. My mind was not awake, not hungry for coding, or for much of anything. I ate lunch at the right time, took every substance in my cabinet, took breaks and prayed - that was the only good part. Got only just a little done all day.
Life notes: Drank too many beers after accomplishing so little. Felt quite nice but I'm sure it was too many and I'll have to see how I sleep now. Today I failed on my kratom reduction, I was doing beautifully, but took 3 extra grams. All I can do is get back on track. I'm just so pissed that I can't feel anything for this project and have nothing else in the world that I can legally go do. Thank God it's soon to end. I need some variety to give my brain a refresher and come back and do awesomeness on my code and ideas. Goodnight for now.
Major rework on character graphics. Brought character clothing layers back, but now all chars in world use a single 2048 squared image in vRam, because I don't want to use multiple VRAM units for them. Keeping it all to 8 max. It took a few days to think up and code. Character graphics are positioned on the image with code and make best use of space, adjusts u/v for each sprite. It's more efficient, has more features, and much less code. I felt so good after wiring that thing.
Now going to sort out some of the junk on this To-Do list to tidy things up. Will be refreshing to work on some less complicated stuff. After that I will straighten out crucial game aspects like inventory, pick up and drop, conversation, battle engine, and simultaneous pathfinding whether shared or independent grids. All with the goal of a nice working demo where everything comes together.
May 7, 2017
Working out obj handling between scenes, and the time scene graphics are bound and unbound to vRam, saving and loading in both editing and gameplay. See text file from May 5th. Stayed up till 4 AM working it out. It seems simple now but it's because I never thought I could get away with simple before.
Life notes: Went through another drinking phase up until sometime in April, started keeping a record and reducing over time. Totally under control now, just a few beers each day, and skip days once in awhile, but beer does not screw me over like liquor. It's gentle and doesn't disturb my sleep. I can think clearer without heavy drink. I'm using phenibut lately, every day for almost a week now I think, but only 300-800 milligrams per day, usually just 400 per day. I read online people take 300-400 twice a day every day and are okay. I can feel that it's less effective already so I will have to wash out. Enjoying my project pretty darn well for the time being. Also reducing Kratom slowly. Bought a house, move in a month. Jehovah helped us with that, we prayed specifically. And finally, only about 7 weeks until I'm free and 33.
Nov 3, 2016
Spent the whole morning changing the way I sort map objects. How silly it was. I even ran a timer test on the method and a new method. The new method is way faster. I had unnecessary nested object counting and for every object placed it ran through the counting again. Simply store the sorted objects in an array and you don't have to search for the next one in line, it's already stored in order. Duh. Major performance increase, even though my computer didn't particularly need it. It's just smarter and more efficient, less code.
Oct 28, 2016
Been working every day on the engine. Made massive improvements. Sometimes I wonder at the way I used to do things. But I feel like, even after so long without programming, I think more logically and practically than ever.
The last thing I just finished was moving all editor inputs to a different function. Why did I never do that before? I have all these If mouse button 0,1,2,3 and Edit_Mode true/false tests. Rubbish! I cut that stuff right down the middle and extracted all edit_mode keyboard and mouse inputs to a separate function that is only run if edit_mode is true. Duh. Way easier to read and more logical.
Before that I was examining and revising the good old Obj. Put in an attributes() array so we can have custom variables and values for them. That is partly managed by the Union of different object types but even within the map obj type you have all kinds of possible attributes that will differ from other objects. Such as whether or not the thing is locked, closed, on/off, and countless other things the scripts greatly benefit from if they can just create, set, and read custom attributes on the fly. Besides that I hate how my maps get destroyed every time I change the Obj. This will reduce some of that, especially in the longrun.
Improved obj Behavior. Each object will call it's own behavior routine each cycle, and act depending on what behavior it has. Not sure the extent to which it will be used, as most behaviors will be in response to the player interacting somehow. But perhaps a behavior that is constant would be like "Follow You" or "Avoid You" and you could make like a bunny that hops around and checks how close you are, and adjusts his direction.
I improved the display of all GUI forms so no matter the resolution they look pretty clean. Not perfect yet but much better. (No more slanted buttons, etc.)
I successfully built a map with flickering candles on tables in the pub. Adding some tricks to animations.
Also added ability to select multiple objects, move them, remove from selection and add to it.
Limited graphics to within a defined window area, with black borders. The window is scaled as big as it can go and still fit, so regardless of resolution you will be viewing nearly the same thing. All game activity is within an unchanging window size--this constancy and definition is exactly what I've been waiting for. And with the ability to pan the view area around, the scene size itself doesn't even matter. Panning is wonderful, wonderful! No more worries about exactly what size each scene should be and how to resize good ones I've already drawn. Just pan when the character gets close to a side of the window!
Moved the pathfinding grid to only the window view area. Because the viewing area is only 256x192, the grid is not huge, runs fast. I can also probably make it even a bit smaller, perhaps a custom size depending on the map, since you will never walk all the way to the top of the screen, as I think all scenes have some kind of horizon.
I learned a little more about GL, the functions are less of a mystery, although it's still another world of programming. I'm confident that with a little help I could pretty much do any graphics tricks or effects that I want, like all at the same time: rotate + scale w/h + alpha + flipping + even stretching four corners around. Since I don't see much need yet I don't bother, but nice to know it's limitless. GL is amazing, fast, clean to code.
Improved a lot of various other little things. Enjoying it a lot. Don't even want to touch alcohol anymore because I want to think sharp and clear for this. Doing well in day-to-day and spiritually.
Oct 20, 2016
Giving ToadNet another rest. I see a lot of potential with it, but I was running into the problem of connecting it with parts of the current engine that aren't complete yet, such as world saving and loading, map switching, global and static object handling. I feel like I want to progress this engine first, even finish a one-player game first, and then think about adding that ToadNet in. I'm trying to put icing on a cake before the cake is complete. But perhaps more than anything I just don't yet see the value of the vast amount of time and effort needed to make it work. It was a wonderful mental excersize and I progressed it very much, and I will remember, and it got me back into a programmer mindset. That's the value of it for now, but it's backed up and I return to the original to really get it cranking. If I can do as much work on ToadNet as I just did over the past week, I know I can really fly with the single-player engine.
Oct 15, 2016
See the recent ToadNet document "another look at". Going to give it a try putting it back in since I improved its functionality, understand it better, and see a lot of potential in its making possible a multiplayer game.
I've got a lot of it installed. It was wiring up beautifully until I hit the scripts section, and that made my head spin. But since I'm working with a max of four players, I think I should hard-code a script for each one instead of making a single generic one. I'm not sure. Depends on exactly what the script is going to be doing as regards both functionality of character (standing, walking) and story aspects. A lot to think about.
Right now you can actually move your character through the server commands, yay! Pathfinding and everything works. Just like before I installed ToadNet. But when second player tries to join, I need a request to the server to create a new object and make it an additional PC. So far the client is actually creating the PC so that's not good.
Feb 23, 2015
decent rework of GUI functions Msgbox and Text, improving abilities and reducing code. also added a Convo GUI function with character portrait and dialog reply list. And Awake is a very good album, btw. i'll soon take a closer look at the GUI forms and objects i made awhile back, maybe creating some on-the-fly functions for some general usage OK and Cancel button message boxes and stuff. also will be looking into depth scaling for characters and objects; i wrote some notes in another file on that subject. cleaned up a lot of Extra functions, got rid of MyKey (inkey used properly works better.) will also be building some GUI screens for shops. not a whole lot of major needs before i can really start scripting the game. will need to consider any needed practical functions for doing obvious things with least amount of code, like characters moving about and animating, gestures, face expressions, whatever.
Feb 15, 2015
been working a lot on some core functionality. changed the way objects point to their graphics, made them pointers actually. earlier on i didn't realize you CAN point to an array and index the whole array with just one pointer; i thought you could only point to a single element of the array. so it's quite wonderful to be using pointers for objects to point directly to their own graphics for animations.
i often get blurry-minded. i lose focus because it's such an immense thing for me to keep on my brain. the wine doesn't help actually.
Feb 11, 2015
fixed fps limiting, was so confusing. changed Single FPS variables to Double ones, and it works like a charm. unbelievable how much time can be spent figuring out a tiny irritation like this. i still don't know why Single can't work.
next problem is figuring out hardware texture units. it's confusing but i think i have either 8 or 16 textures limit. that's a different story than what i was thinking earlier. i was thinking i'd have like 15 or more on just one character. no way man! that's not to say i can't keep clothing animations on the hardware, i just have to consider how many different clothing, how many animations they have to be in, and how many i can pack on one texture. i still wish i could do builds, though. if there's a texture limit it only makes sense. the problem i have with that is when creating the build there has to be enough space in each frame for the clothing not to get clipped off on edges. this means i end up having to make each frame larger than necessary when those clothing are not worn. but it would guarantee that i have only like 1-3 textures per main character, which is ideal.
i am considering stepping back down to the non-S2X versions. they actually have a nice feel to them. i like working with pixels, and while S2X did make it a little smoother, something was lost with it. besides that, a great game can be done with simple graphics, and it conserves more texture space so I can do more animations and make a better game. saves some time, too.
got a beetle mount in progress. everything is falling into place actually. got to come up with some story soon.
Oct 21, 2014
here i am sitting before this huge window looking into the dark of night, in our new house, in our new life. over a year of anxiety about prison and it never happened. thank Jehovah. house arrest is just fine, hardly a problem. i think if i did get a year or two, i would have been okay though. would have been really rough, but somehow i would have made it into a more positive routine. but Jehovah spared me. now my struggle is to keep up the clean lifestyle and routine. i've slipped a bit, but i want to keep appreciating what Jehovah has done and keep my priorities in order and work hard.
looking at my project is sometimes painful. but after the meeting and having finished the day i feel like my conscious finally agrees with engaging a personal hobby. and yet i hardly have much time for it. that's why i tend to drink and play gunbound. but that uses a lot of time, actually. i think i'd rather have something to show for my time. i'll go see what i might like to do.
Nov 15, 2013
things are good. i don't want to believe that. but looking at it squarely, it's true. there's good reason to believe i'm not going to the dungeon. not that everything is cake now. still have to go to these classes, meet case workers, deal with procedures. it's not fun. sometimes it's really hard. but everything i think is really hard ends up being just fine, except all the worry i put on it. i'm struggling to do what's right, but i guess that's everyone's story. we're all trying to show Jehovah we are enough to ignore our own desires and do his will.
so, no TOADNET. can't bare it. too much confusing work for something not entirely reliable. but the latest thing is colored pencil scenes vectorized with the classic character style. it could even work for the 3D character if the scenes were drawn differently, like taller doors and finer details. but this rough artsy look is quick and fun and looks good. the vectorizing gives it a game look and not like just a scan of a drawing. so it really works well. even less time than coloring on the computer because of all the pixel shading you have to do for that. so i'm rollin with this. and many cups of black tea.
recent idea i had was, if going with a purely skill-based character which only improves through skill use, is interactive skill building. for archery i can pull in that gunbound simulation i made. that could actually be used in battles where you have to estimate the angle and power. the harder the shot, the more skill is gained, and therefore the more damage you do. so skill builds damage in this case. a fall-back idea is to have a shaky cursor trying to hit a target (maybe a first person target minigame thing, or just in battle) and the higher your skill, the less shaky the cursor is, reflecting that your character has a steadier hand. critical shots would be natural, accidental dead-on hits. all the same, critical could be done naturally the gunbound style too, hitting core for a damage bonus, or armor penetration.
Nov 09, 2013
well. don't know how to start. life-changing events have taken place for me and my family. i've never been so clean in conscious, nor trusted in Jehovah so deeply. the discipline has hurt. the future is still unsure in part. but, that is okay. i have Jehovah my friend forever. thank goodness that i can worship him cleanly now. that is too good.
as for the project. i most certainly do not live for it. i can barely get myself to work on it. lately i have been able to do so, only after more important things are attended to. but i am putting TOADNET back into a second copy of the project so i can work on some kind of multiplayer game for mom and i, and maybe others. the engine does connect. two issues. mom's computer is very slow running it, not sure why, might just need restart. and i'll have to be updating quite a few attributes in order to get things to sync correctly. otherwise it looks promising.
May 07, 2013
i won't give up. might take a step back, though. right now i'm sort of blank. it's better than being anxious and irritable. i'm a little depressed. but i'm humble enough to accept my responsibilities. sometimes i wish i could just drop everything and refocus. start putting everything into a more spiritual and even practical mode. direct my energy in a more conscious-massaging way. so i feel like i'm not avoiding and running and neglecting. everything is done so fast in the mind. and overall i'm proud that i've even done much of it in real life. but my project demands a massive amount of time even yet.
i know i live for this project. even though i do my best not to let it get in the way of family and spiritual activities, it's on my mind constantly. morning, night, day. why. maybe i forgot why. chasing some feelings i used to get making games. but now my standards are so high it takes every drop of me to reach them. and for what? i don't even have much inspiration. i suppose it comes and goes. at the moment i don't hardly remember it. but i think it comes again. but it won't if i'm sacraficing too much for it. Jehovah knows. i'm looking for that well being. for that wonderful hopeful progress of a designing an adventure. for that glowing feeling of the freedom of creating anything the heart wants.
i think i would do a more story-type game. even if i use some skills its just to progress along a story path. why? because i realize even a bit of linearity doesn't hurt the wonder of a new adventure out of the box. even if it's one-time experienced and not lived through again and again. it's a gem. it's a tale. it's an experience.
meeting characters. trading with them. working with them. watching them in their daily routine. feeling a part of the world. adventuring on space ships, new planets, doors into the unknown. i might go into the text project a little so i can hit that instant gratification and see if it's much more satisfying or not.
after meeting: i have to say i feel a lot better, more inspired, more free, when i have a clean conscious and am putting Jehovah first. i just have to say it. it is the proper order and it is what pays off. when God's spirit runs dry i am joyless, uninspired.
Jul 19, 2012
went looking through all the graphics today. all the way back to the first style, 20x20 tiles. really, each style is unique. they get simpler the further back. in all i've got about four styles that i like, and often had trouble deciding on. the original, the 16x18, the hand-drawn, and the 3D. i'm tempted to go back to the very start and finish something. today i looked at all the original 20x20 tile maps. they brought back memories. i feel a debt to the original project. i'm considering finishing it. it should be the easiest out of all the styles. and perhaps, since it's easy, it will give me wind to go on to another style. i know it's a bit ugly. but i can do a little touch up and make the most of it. no reason i can't divide this engine into multiple games. so i'm decided. (for now, knowing me.) i'll attempt a story in the original style.
Apr 03, 2012
after a five-month break i'm poking my nose back into this project. things are clear. i like the 3D better. i don't care for multiplayer anymore. and finally, the game project needs focus and i feel ready to give it some. i'll be dealing with a less epic endeavor. just think. an adventure type game built from 3D scenes and animations. no need for a huge open world. of course removing multiplayer is a big relief too. the bigness of the world will be captured into small scenes. there will be exploration, but it won't need to be of every corner of every street. just as a poem is so much larger than a few stanzas, the game world will feel much larger than its few scenes. good art is like that. and this project is a peice of art.
spiritually i am well. still suffering depression and anxiety daily. but having pioneering a month, kept away from almost all my sins... i mean i did better than probably ever in my life. and still have this darkness in me. it pisses me off. but this evening after the long-dreaded meeting, i feel quite good. even good enough to find interest in my old project. God, Jehovah, how can i possibly feel this way more often? i beg you to help me. i don't know why i daily feel like trash. i need help, i know it for a fact. whether anything can be done, i don't know.
regarding plans. remove the TOADNET stuff. save the project first just in case. install 3D software and come up with some new scenes. get a story in mind. sketch up a plan.
Oct 27, 2011
improved walk-zone behavior objects, cooperating with path-finding now, and blocking you from walking into transparent areas, whether by mouse or keyboard. i'm allowing either arrows keys or clicking for moving around. at least now interaction with objects is just right-click with a pop-up menu. this menu is built after querying the object. and after selection the object script is run again with the result. it's better than switching between half a dozen cursors. plus you can get completely unique actions this way. with the verb menu like classic adventure games, you were really limited. how would you ever "turn" or "look under"? with multiple cursors you could get those actions with the default cursor, but only one, right? because how could you do multiple unique actions with just one cursor? so now you can get a whole menu of actions unique to that object. i've added a wait cursor for scenes you cannot take any action. i want to add a glowing cursor or something for when highlighting objects where an action menu is possible. and maybe a walking cursor for when highlighting walkable ground area. that will keep from confusion of clicking in non-walkable area and getting no response.
Oct 22, 2011
more code revision. seems insane code can be revised so many times. i feel like i'm thinking clearer because i've really taken my obediance and integrity to Jehovah to a more-serious-than-ever level. this is the first time in my life that i've decided to sacrifice every unclean thing, and start imitating his son in my daily life. a beautiful girl is not first in my heart, and neither is this project, or any personal freedom. keeping clean by awareness of Jehovah's awareness on me, that's first. and it feels good. the only thing i feel lacking is being in service regularly.
i've done away with .bx / .by. Non-upright objects are drawn the same, from top-left corner. Upright objects are drawn starting at top-left corner plus an animation-relative -x/-y offset. so a character walking offset can be different than climbing. the offset is to maintain the base or feet of the animation. that was the point of bx/by, but this is now an animation offset, not a base x/y hotspot. that means the object x/y alone is the base already, because it's drawn from there. this makes sense for upright objects whos feet or base are what is important to locate, as that's what's touching the map. it also improves scaling behavior.
started a game GUI including partly-working inventory. recoded almost all the GUI functions and also the msgbox and other functions. they draw smooth and maintain a proxyRefresh in the background. this is for any game/program that wants to use the GUI. too hard to explain, just look at code. also added a walk-map behavior for a way of scaling objects for perspective automatically by checking the RGB values of the pixel where the object is. it's quite wonderful.
it's getting better all the time. maybe i can get this time-consuming work done before i head into service more. although i enjoy it, it'd be nice to just focus on the story and gameplay when i'm busier with spiritual things. life is good when you have Jehovah.
Sep 28, 2011
yay! cleaned up my code a lot. (and my conscious with Jehovah.) got rid of a bunch of functions creeping into the scripting modules. after i branched out and worked on my IFEng v4.0, i realized that if it's not related to the story, get it out of the story module! only story stuff. that is, all things that would set up objects and scenes, and scripts for them. but all functions that load graphics, set animations, draw the character... why they in there? get em out of there!
anyway it's nice to have clean code that you understand. when it gets hairy and confusing, you feel like throwing it out. i like simple, clean, organized, but very functional and flexible. it's an art just maintaining code. but then building the game end of the game is much smoother and more enjoyable. running into disfunction or lack of function while scripting is a pain in the butt.
Sep 27, 2011
just wanted to say i moved the camera down lower and found a spot in the same scene that looks good at low angle. so i've got sky! it wasn't easy, had to move the market around a little, and the main city wall, to avoid blocking the view of doors. but yeah, this is a really cool improvement. even though i lose the ability to see a greater space from above, i get the nice scene-type angle. made lots of improvements to the girl, in fact if i haven't mentioned it she's an entirely different model. anyway took forever to get walking animation done for her. had to rebuild her skeleton, pull my hair out because her arms were going wacky (solved by changing xyz rotation order of shoulders.) all kinds of pains as usual, but i hit a nice plateu (HOWEvER YOU SPELL THAT) and technically i'm on easy roads again. just the labor of remaking animations for the girl, but will be better this time. she's like way less polys, a simpler and better working model. her clothes don't tear half as much as before. so yeah. she's cute too. have to do a man too. anyway the project is technically the very best it's ever been. i did go back and forth. the ONLY regret i have is leaving my hand-drawn scenes behind. the 3D is actually working out. i lowered the res yet raised the render detail and it's beautiful. it really is quite nice looking, and my mom prefers it over the hand-drawn. but I MISS my old characters and hand-drawn scenes. maybe i will do a game with them one day. so in my life i'm in a little room with pink dirty and pencilled walls with allergies, trying to improve my obediance and relationship with God, working on my projects.
Sep 16, 2011
i am very pleased with my town scene. the lighting is quite good and the atmosphere is inviting. i will draw over the top of it to give it a little more character and detail. i will crack the edges of buildings a little, draw some vines coming up. things like that. to give it some art which i am capable of after the main part is done. because to start from scratch with just drawing i do pretty bad.
but i have one other urge to satisfy first. the only thing i feel i'm missing is the sky. there's never going to be any sky shots, unless they are just movies or non-playing scenes. but to miss the sky is to miss a lot of atmosphere. games like Indiana Jones and Beneath a Steel Sky had sky angles, almost all the adventure games did. such a pity to miss that. but i can't really switch between the two. it has to be all one camera angle because the characters are rendered at just one. to render them at multiple angles is insanity with as much combinations of clothing as they have. so before i decide to lock into this style, i want to see what kind of lower angle scene i can do that might steal my heart.
Sep 15, 2011
the smallest res a char can go is about 96 pixels tall (1/2 the 640x480 render). otherwise it's too blurry or distorted, even with very high render settings or NN resizing, or in-game scaling. it looks bad. anything much smaller would require pixel art by hand.
this means the distant perspective (like in the town) cannot be resized to 1/2, since the char would be twice the correct size at 96 pixels tall. and if the image is scaled up, the char res is double that of the scaled background, and she looks too fine, out of place. we want consistent resolution.
a low-res version of the game can still be done, but differently. a scene would be exactly the same as high-res, except clipped to 1/4 the dimensions. so you would have to travel into four other scenes to see what is normally seen in high-res. then this would use only 1/4 the memory required for a scene. but i'm not sure i fancy the idea of so many scene changes. and in most screen res, one scene wouldn't even fill the width of the screen. but another option is to use two 1024 res side by size, which would still be 1/2 memory used, less scene changes, and always fill the screen.
Aug 4, 2011
Fixed the hand-catching on skirt issue. it's done by a copy of the legs only being the rigid object the skirt moves against. the legs have an exact copy of the original skin weights. i had to play with the Quality settings of the LEGs and not so much the skirt, to keep the verts from the legs catching. also, to constrain the waist, it must be done with Dynamics->nConstraint->Point to surface. it looks perfect now. Remade the longer skirt because it was having some issues and in the wrong position. both skirts work beautifully now. i'm getting the hang of how it all works.
Aug 3, 2011
New animations. Girl has a relaxed standing pose and a lean-to-pick-up pose. All clothing and hair are done except skirt, because the pick-up pose has a problem. Her hand brushes her skirt and it catches, and pulls the skirt away. I'm asking for help on a board, trying to recall how to avoid this.
There as some trouble today as I struggled to think of a better way to automatically create the animation frames. Tried some new techniques but they were not good. Basically I cannot nudge a character this or that way in order to shrink the frame size and save texture space. It becomes this manual effort that takes too much time. I don't mind that much if each frame has to be as big as the sum of the space needed by all other frames. I was trying to save space by reframing the character in each frame, but it becomes difficult to synch the right character positions of each frame. So I used a Marker object in the render, but the whole thing becomes tedious nudging. I want it automatic so I can keep making new animations quickly.
Jul 31, 2011
Wow. Now any character can change clothes instantly from RAM storage rather than VRAM. I had to use "Character Slots" which allow for x amount of characters to be in a scene at once. These slots hold all the body and clothing animation images in RAM. Then the clothes are layered to create a build which is stored in VRAM. If you switch clothes, the layers are again pulled from RAM and a new build is made. Took a couple days just to work that out. But that should really increase performance since I don't have to access a separate texture for every peice of clothing. I have reduced the texture sheets by three already, and additional clothing items will count only in RAM.
Jul 27, 2011
VRAM use is smaller than I thought since I'm using less images than I thought. I'm going to keep one scene to a single 2048 squared with layers. I can do larger in scenes where there is not a lot of huge animation layers. Only 4 frames for animation, then reversed, making 8 total, for the large animations, but 6/12 for smaller ones. If I stepped down to half resolution, the VRAM use would be really small. So this is working out great.
Jul 22, 2011
Been awhile. Not sure if it was mentioned, but all 3D modeling is now done in Maya. I've been detailing the city square for so long. But much of it was learning, and later scenes should be quicker. The resolution is now quite high. The game looks great in 1600x900. The texture sheets are 2048x2048, which seems to be a reasonable size. I thought it would be a ton of space for image sets, but for example tree animations, along with their shadows, I can devour VRAM with numerous texture sheets. It's not a problem for a machine like mine. I have 1GB of VRAM... and my program is using around 128-256MB at most for a complete scene. But that's all the VRAM some people have, so I don't know. I'm trying not to feel bad about it. I can drop the resolution to half, which gives it a more pixelized and slightly blurred comparison, but why? If the game looks great, don't settle for less just to accomodate older machines. I thought I *wanted* a pixelized look, and I spent 30 minutes just comparing and seeing if I could settle for it. But the clearer one looks better.
Once I get this scene perfect, I'll make a game plan. Sounds, animations, functioning of objects finished first. Maybe even an animated horse you can ride, and a food cart you can push around. I want to see how much I can actually do, or where I draw a line because of difficulty or just takes way too long. When I'm satisfied with what's doable, I'll make a plan. Right now I'm testing, can I do this? What about this? Animated trees? Large animations? Different light effects? Can I make it look really good, and not like a stupid 3D render? Can it play gracefully, and not clunky? Because good animations mean nothing without grace.
Today's the day I sealed the roof so spiders can't come in, and nearly fell through into the bathroom below. :) But there's nothing like making this game come to life.
Apr 07, 2011
Delicious progress. Switched over to OpenGL in just a few days. I even understand most of it. Parts of it I don't worry about understanding. But I rebuilt my image type to contain the GL type which contains the FB.IMAGE type plus makes use of the reserved bytes. On top of that switch I figured out how to load only the BMP sheets as textures to GL, and tell GL my box coordinates so it can draw that part of the texture only. The reason for this is not to have to "Bind" textures every cycle for every image. Now it only "Binds" the BMP sheets, which are much fewer. I will shortly be testing FPS on mom's old laptop again to compare with previous test results before this binding optimization.
Mar 23, 2011
Now playing with sounds and music. Got a recording of a thunderstorm, and my song A Quiet Place, along with wet footsteps when the girl runs around barefoot. There's rain falling and lightning flashing, and even the shadows are dimming away and fading back. It's really wonderful. Starting to look like a game! She pathfinds perfectly, arounding around objects. The layering works perfect. She does get stuck once in awhile if you move up close to a bounded zone, but not often, and it's probably an easy fix.
I want to blog about this project soon, and put up YouTube videos.
Mar 19, 2011
Switched sorting over to using AndAlso and OrElse and gained about 5 CPS (cycles per second.) I am using cycles to calculate the main loop cycle regardless of whether anything is drawn or not. Drawing takes place on a different cycle. There is a drawing interval and FPS is calculated from this. All math and sorting and pathfinding take place on the main cycle, which is currently every .01 second, so that's where the AndAlso improvement is seen. I'm choosing to keep math and drawing on separate cycles so that math is not slowed down by graphics. Although right now there are times I'm not sure which is slower, they might be competing. Math can become very slow when pathfinding is complex. So I have simplified pathfinding to a single point per cell, rather than four. It goes alot faster and with a couple dozen bounded zones it still runs decent instead of crawling. On my computer anyway. Got no idea if we stepped down a few years in technology. I've considered using delta time and stuff, but it doesn't seem right. What I want is optimal code. This is teaching me to code better. I might even use a faster graphics library but I'm not sure if OpenGL requires the user to have a video card. If they don't is it going back to software? In that case no thanks. I want an all-round improvement. This game doesn't even look like it should require a graphics card.
-- I just realized pathfinding is the entire CPS and FPS reducer. Yes because when it's complex it takes longer than the CPS or FPS time interval. I filled the screen with images, dozens of them, and there was hardly any hit in FPS. but when they have bounded zones... everything slows down. Thank goodness I at least cut the problem down with cell's one-point bound detection. I'll snoop around and see what else can be done. Large grid cells would definitely help, I might step those up a tiny bit. I really need to know how this is going to do on other machines. Because calculations may take much longer.
-- Just stepped up cell size from 8x8 to 12x12 and see a huge improvement. I calculated 6,827 less cells than 8x8! (Screen resolution 1024x768, full-screen static mesh.) Didn't realize it was such a difference. I just tested creating a doorway passage and it's perfect! The cells are about the thickness of a wall so that one row of cells makes one wall, which wastes no cells and you wouldn't need a tighter space to block or open than about 8-10 inches. I MIGHT be able to get by with an even larger cell but only if older computers can't handle this.
Mar 18, 2011
Pathfinding further improved and there are now two kinds. One is static-to-screen used mainly for the pratagonist since he never leaves the screen. So the mesh is the current screen. The other mesh is mobile, following the object. This is so even off-screen they can still calculate 1/2 screen is any direction. (They're never far to one side, but always centered under the mesh.) No I'm digging Wisp on a sunny afternoon and typing away by open windows. Finally decided on screen resolution and graphics. It's 1024x768 but will hopefully be flexible in the future. Most the graphics are not scaled anymore, and they look cleaner because of it. The characters are scaled right now and look pretty good because of the Eagle softening. This way graphics are maximized in quality where it's not inconvenient, and for animations and things they are kept simpler. Same way lots of cartoon animations on TV do. Beautiful backgrounds while the animations are simpler, less gradient or textured.
Mar 3, 2011
Switched to four-sided polygons as zones rather than only rectangles. Now the characters can walk around slanted walls, bounding zones and all zones can have some angles. It was one of the most difficult things I've ever done to sort the map based on polygons relation to one another. Even now there is a small bug that happens sometimes if a poly zone is moving around other polyzones. It will sometimes be sorted in front of it when should be behind. But the sorting works best if an NPC or moving object is a single-point moving around polys. It works very well and never gets stuck in a sorting loop. It's at a useable point as far as I see. I may tinker more later if the bug keeps coming back but I'm so happy it is as fluid as it is. I scribbled many little drawings trying to understand the sorting method I needed and then write the code. Besides this pathfinding now avoids bounded base zones. Next I will try to write a little script where you use your hand cursor to open a door, then walk through and it will close. It will take advantage of all recent adjustments. Path-finding, poly zones, and advanced layering. I do believe it should be simple to write the script now.
Feb 21, 2011
Big revamp, switched to more of an OOP style. Put all subs and functions related to manipulating an object into the object itself. So an object can now draw itself and animate itself and so on. This arrangement did simplify some things and make things more logical. No real drawbacks so far. A list of scripts is made from the actual Story.bas file now, and I got rid of the sID UDT. Also added Enums, replacing many sets of #Defines.
I know the engine can use some further improvements but it's the best it's ever been. That's not to mention the awesome scenes I've been coming out with using Google Sketchup. The graphics have changed again, going scene-based. I've stunned myself with the Bedroom scene and a story taking place there is easy to imagine.
Oct 17, 2010
Rewrote animation handling. Now there's an array of frames that can display an image from any set, for any amount of time, at any opacity. All images can have tags now and can be referenced by them, so their order in an image set doesn't matter. This will be important if maps and animations are designed and then the sets change. Nothing will need to be fixed, it will take care of itself. Wrote a script for an arrow being shot from a bow. More dynamic than before, as it didn't need to be a special "arrow" object thing. It was created on the spot and moved with every obj_go, a call to object scripts for Go. It also stops on nogo zones, but I'm going to have to create some kind of verticle zone for objects, as nogo zones are no good for pretending to be the body of an object. only the nogo-base of an object. but a verticle zone could be just a another box zone that is drawn as upright instead. even trigger zones could work but they may need to be used as something else. another important test would be a 2-d base-y, as we need to know if the arrow is above the upper part of the base or lower than the lower part of the base, so it can fly behind or in front of an object body, even though it's within its verticle zone. it will only stick if the arrow's base is between the 2d base coords of the object. for angled walls it would be difficult. one idea would be to make several wall objects, each skinny, and place them side by side at an angle. lastly an obstical is to move the arrow quickly, jumping say 10 pixels at a time, but checking those 10 pixels before jumping again. in case it jumps right into a zone too far.
Sep 30, 2010
With some hurdles, it has come to work pretty well. Got the scene objects to layer properly. Had to alter the keyboard movement because he was getting stuck so often, hanging on every corner of every no-go zone. Now he glides around them a little better. With objects having much more angled edges, nogo boxes are not really ideal. I need other geometry. I will be adding mouse support for walkingaround I think, as an alternative to using the arrow keys. Besides making bounding edges less of a problem, the pathfinding code I wrote would really become of use and pay off. This difficult requirement of point-and-click adventures is already completely resolved. Just need to hook it up to a walking icon. Was thinking about assigning some keyboard letters to the basic commands. A=action/hand, W=walk/feet, E=eye/look, S=speak/talk to, keys that are all right next to each other.
The scaling of images for depth is still possible, but must be used carefully. It distorts a bit ugly for characters. But it may be okay if they are just walking into a new scene, soon to be restored to regular size.
Sep 28, 2010
This week I have discovered what I really want for this project. It's a very different direction. I will hand-draw the scenes and color them on the computer, rather than have a large map. It hurts to say this, because there's a lot I like about the map style. But I can't deny the atmosphere and the art that hand-drawn scenes bring into the game. I've bys acked up the entire project just in case I regret the mutilation I'm about to impart to the code. It won't be all that bad. I've considered making the maps work together with my scenes but they appear like too different games. It would not likely work out. To fully do a scene takes anywhere from a couple hours to all day long. But each new scene is very meaningful and adds a gem to the game. Of course I could hand-draw many more objects in the map-style, but the atmosphere of hand-drawn is much better. This is because the camera angle is lower, showing the sky, giving a breath of life to the scenes, putting you up close to the action rather than flying overhead like a distant bird. To see the sky in the last scene I did was very surprising... I almost thought it wasn't possible, until I realized this is not the old game anymore. I'm now following in the footsteps of games like Kings Quest, Quest for Glory, and many others. They knew what they were doing. Making art and gameplay come together. Another benefit will be less objects on each map. Where before nearly every blade of grass was a seperate object, causing hundreds of objects to have to load like thirty times per second, there will be at most a dozen in a scene. It just occured to me that I could do wide scenes and scroll through them... very much like the map-style. Wow. It would require more time spent drawing, but not much, considering I'd have to do it anyway in the next scene. Scrolling scenes is not something you saw on the early adventure games, not even on later Kings Quest that I recall. You did see it on Day of the Tentacle and Indiana Jones, yes. Wow. How amazing. Why did I not think of this ages ago? I thought it impossible to draw the scenes and make them look good, I thought I had not the artistic ability. But I've done three great scenes now. The outdoors one was by far the most difficult, but I managed to put my original tree into it, with cliffs, a cave, hanging moss, and a beautiful blue sky. It came out about 92% of what I could dare to dream of perfect. 8% missing in my imperfect idea of cliff angles. They look good, just not perfect. I hope to use a 640x480 resolution, double the scene size to make it fill (they are half the screen res). This way the characters, also doubled, will be able to do half-pixel resize. That's when they walk away getting smaller, they don't lose pixels or detail, but the pixels are cut in half. I'm pretty sure this could work out unless it just looks bad.
This is again now my dream project, the most I could ever hope to set my heart on. Although I can never be the artist I wish I was, I've found I can be an artist on smaller canvas, creating more simplistic yet satisfying works.
Jul 14, 2010
Phew... Pathfinding ending up being a LOT of work. And it's still not perfect. But at least it works good.
Bug Note: There's one cosmetic glitch that happens because the pathfinder first finds his path, and then is moved, and then his course is drawn to the screen based on the new position rather than old. It just makes it look a little jumpy. I find that if I move the actor first, then pathfind, then draw, there's no glitch. Another evidence is in that the glitch doesn't appear when moving the pathfinder by mouse, because the moving takes place before the pathfinding and drawing.
Bug Note: The pathfinder can occasionally find his way to a target way out of his grid, by simply pathfinding to the edge of his grid, and the path is renewed as he gets closer. There is a problem if the edge of the grid is blocked, so that his destination (the grid edge) is now essentially blocked. He freezes and can go nowhere.
Bug Note: When either of the pathfinder's x/y coordinates (base of his feet) are less than 0, the calculation is a bit off. It makes for faulty pathfinding. It is actually positioning the pathfinder in the cell up-left to the one he should always be in. It happens immediately after the x/y drops below zero. He moves a cell but the entire grid does not move.
Jul 8, 2010
Wowzer again. Pathfinding. Real pathfinding. Every object has the ability to do it. I'm not 100% finished with it, but the path is drawn from each object's memory. All I need to code is a way to make the object follow the path, which shouldn't be difficult. It divides the screen into 80x60 (640/8x480/8) or 8x8 squares. It tags them as unwalkable if they reside within any other object's nogo zone.
Another great improvement is turn-based battle. I can actually fight multiple enemies at once if they are in the same group, and each takes a turn. Their behavior can be general according to their type, or completely unique if I want. Mixing battle and good pathfinding, this game is coming along.
Lastly, animations are set and switched between much better and easier. My concerns right now are the odd graphics loading routines. They've definitely improved being I can use professional software to draw everything now, but adding and remove graphics to various sets is a little wierd. For example, if I were to decide to add an animation frame to an animation made a long time ago, the frame number would be inconsistent with the previous frame numbers, because of all the recent graphics made since then. It's not an issue with independent images where there doesn't need to be any continuous frame order. But I find I have to reserve a bunch of unused frames in case I will be adding more. It does need to be improved.
Apr 2, 2010
Wowzer. I did something that was seeming so impossible and confusing. I was befuddled at how I would get certain objects to stay loaded when changing maps, because you can't erase the PC inventory, or other objects that need to stay active in the background. All of this on top of the fact that you need to be able to save your game. The sollution is much easier to explain than the problem. At the beginning of the game, a temp folder is created within a savegame folder, and all map files are copied there. This way the PC can alter maps and they will not effect the originals. Also each object has the attribute of stayactive. anything added to the PC inventory stays active, for example. i have two new functions map_gamesave and map_gameload which save and load from the temp files and also do not erase active objects. works wonderfully.
on top of that i added object rotation. an object cannot be translucent and rotated because MultiPut doesn't support both, but I have the option of doing either one for any object. but this was really easy to add and should allow for some fun scripting.
i made my first decent indoor map which is lacking a bit in pixel art, but really not too bad. weapons hang on the wall. also, you can drop any item from your inventory onto the map ground, which of course is saved there until you pick it up again.
Mar 31, 2010
Designing an entire set of GUI controls. I have done about six total controls that work well. The .bas and .bi files and a few variables need just be included to any project and the GUI is accessible.
Also using functions as scripts should work great. I've already designed the switchboard that hooks up objects to functions.
Mar 28, 2010
Recoded the shop window. It now uses icons like the inventory instead of a list of item names. Items can be bought and they are properly moved to the inventory depending on quantity or duplicate existing in inventory already. I'm now theorizing on benefits of using scripts for each object or somehow pointing to functions for each object.
SCRIPTS OR FUNCTIONS?
Using scripts for each object seems logical. The object (obj(n).scfn) for example would point to the script file on the computer. So, as you're making a new map, and decide you want to make a lever you can pull, you add the lever object, set its animations but disabled, set the trigger and mouse zones, and point to a script. When the pc does the hand action on any object, it will run any generic functions available, such as open/close openable/closable objects. But it will also (perhaps firstly) run any available script for the object and send the keyword of the action performed on the object. If you're in the trigger zone and clicked within the mouse zone, it will send "Hand Action" or something like this, as a keyword when it reads the object's script. The script will have its own functions that are locked without appropriate keywords. "Always" is a keyword and function that are executed every loop of the game. So if "Hand Action" is executed (we already know the pc is standing next to the object), then the script can tell the engine what variables to modify.
A script modifies variables by referencing objects, not by index number anymore. I think this because the index numbers of objects change when an object is deleted. And objects should be able to be created and deleted as needed by scripts. Objects should be referenced by specific attributes. Such as the function I recently made obj_with_id(id). This will return the first object it finds with the id specified. As objects are added and deleted, they keep their attributes, and can still be referenced by them.
I'm still not sure 100% about using scripts. Can multiple scripts be run at the same time? It's a must. I suppose the script reader can be executed recursively.
Functions, on the other hand, would be like scripts except hard-coded. It would make the scripting part infinitely easier because every variable in the game is easily accessible. Don't need any parser, interpreter, nothing. But getting an object to actually point to a function is a little confusing. If I could, even though I would have to save the map, write the function, and recompile, it would then point to it and should work fine. All those functions are kept in a separate module that only contains the scripting-type behavior of the game. It includes generic object behavior and specific scripting. Since scripts do not change during game progress, neither added, modified, or deleted, why not just hard-code them?
How to point an object to a function? Using a function pointer is probably not going to work... unless there's a tricky way of doing it. Saving the function address to the hard drive then trying to point to it later is going to crash the game; the address of the needed function will have changed in RAM. The only thing I can think of it a huge switch panel, redirecting a integer value to a function. using Defines would help:
#Define Red_Lever 87
obj(n).f = Red_Lever
if pc uses hand icon in (n) trigger/mouse zone:
select case obj(n).f
scr_Red_Lever(n,key) (go to the function, pass object number and key (hand_action) )
Because of how easy and equally or more useful, I'm going to try using switches to functions.
Mar 26, 2010
Completely recoded the inventory window. You can now drag and drop any inventory item to any slot, and it will insert it and move the other items over. So the player can organize his inventory the way he wants. Simplified code to only work with objects and not make a new array for the inventory list. Today I realized my engine will also be a great foundation for completely different style games. All this work is not just for this game. I could make an old King's Quest style game because the collision detection, animation, everything is there. The graphics could be side-view instead of birds-eye. I'm tempted to try it, but later.
Mar 24, 2010
Been mostly editing and making new graphics. Also improving the way the map editor works with map objects. Don't need to accidentally be deleting any hidden items; the map editor should not allow you to see, move, delete anything but map-drawn objects.
I've been considering adding an integer or short string to the BMP map editor, like box.id, to allow you to tag certain images so that scripts on the game can find the image without hard-coding image numbers. (Like create an arrow object and point to the image number.) But right now I don't care. The good thing is the image number will not change with the new BMP format unless I do a total remake of the games image set boxes.
Mar 21, 2010
The BMP/set editor is much better. I can rearrange sets and all boxes will follow, and this doesn't effect maps already made. Images themselves are organized on the BMPs. If I want to move an image on the BMP, I just move the box in the set editor. If I want to delete an image from the BMP, I do not delete the box. I use the box for nothing, which will cause the true map object to simply be invisible, or set it to an image of an X for map-deletion later, or just reuse it for a new object. The main point is now images can be added, sorted, and deleted without the whole index of images getting offset in the game.
Mar 14, 2010
Ten years! It's kind of sad. Working on this project is so slow. Now I'm pecking at the brick path tiles, trying to make them flow seamlessly. One very annoying this is the game ejects to my desktop in 640x480 resolution every time. I'm thinking about making some pre-defined objects so I don't have to set the obviously y-base on houses, walls, trees, every time. But it might complicate things more than help, for now. The editing of maps is pretty easy. Drawing graphics and importing them is not easy, because of the image maps.
Nov 24, 2009
Two new weather conditions and they look pretty nice. Rain with lightning, and snow flakes. Objects can fade in and out such as sparkles on water, and puddles, appearing to soak into the ground. Objects can move roughly along a an interactive track designer, but only go in 45 angles.
Nov 11, 2009
After a surprise anniversary gift to mom and dad, I work on this engine during heavy rainfall. I successfully turned everything into an object. That is, the pc, npc, map obects, and items, are all part of the same Type, that uses unions to separate kinds of objects. I think I have less code now than before, and it is in most ways easier to use. I lost the ease of using pc.x, for example. It is now obj(1).pc.x+obj(1).pc.bx. But if using With, it's just .x+.bx. .bx is the middle of the image horizontally, and .by is the base of the image. It is nice to have the characters become upright objects, so that they are sorted and treated just like another object, with no need for additional coding. Everything is back to normal, but for a little graphics lag or something, occasionally the pc stutters when moving. The big plus is all items can now be drawn on the map like other objects.
Nov 09, 2009
Now, I'm considering a huge revamp. I'm having a little trouble with objects needing to be more than one kind of object at the same time. That is, for example, an item with tons of properties related to that item, also needing to be a map object with all the properties that are related to a map object. I will now try to convert everything into a single object array of an extended UDT, with Union to separate types and conserve memory. After all, each of pc, npc, map object, and item is an object in the first place. We simply need to share properties that are common, and separate ones that are unique to the class of that object. The only difficult thing will be keeping track of / making scans for certain types of objects. Like, scanning through all NPCs would mean scanning through all objects and choosing only ones that are defined as NPC. That's not so bad. How about Adding/deleting? Shouldn't be terribly hard.
Nov 06, 2009
Well, things are better again. I was able to use Timer to regulate program speed. It works quite well, and is better than what I had before. I've worked on graphics and resurrected a lot of old graphics. I'm now working on a Buy menu for shops and things. I looked at my old code for this game and my jaw about dropped. For two reasons, one, that it is immensely heavy disgusting coding, and two, it looked really creatively and ingeniusly done. At least the ideas were obviously good and hard worked for. And they will pass on new ideas to me today.
I constantly want to give up on this game and find myself working on some other project. But it isn't long and I come back. This game has the most potential for a great game. I am lacking a great deal of graphics, but I believe otherwise this game is about to take off. Freebasic forums gave me a bunch of positive comments on the graphics/screenshot.
Oct 30, 2009
Really pissed off today. Got nothing done. I cannot figure out what to do about the program speed. I found a good way to render everything based on a certain amount of time, like every 8th of a second. That works fine except when there are hundreds of objects being drawn at once. It gets very slow. So I finally figure out how to use SDL - there are like NO FB-SDL tutorials worth crap to be found online. It ends up that SDL draws less than half the speed as GFXLIB PUT. WTH!?!? So what a waste of my time all day long today. Stupid OSystems, stupid programming languages, stupid waste of time. How the hell does the high-end RPGs draw such intense graphics and I can't draw a couple hundred flat images to the screen? NO ONE wants to reply to any of my posts either. ANd if they do, it's so non-helpful.
Oct 24, 2009
Wow, I actually did it. I decided not to use a multi-dimensional img() array. They all stream together on one dimension. But they are now organized into sets. A single set is a bitmap where all the images are drawn. It also includes a .dat file that is a map of all the image locations/dimensions on that bitmap. That map is created with a bitmap map editor, which is just putting boxes around each image. When the game loads the images, it refers to this map, and slices them into the img() array.
An imgset() array holds each .bmp file name, dimensions of bmp, and number of images in it. I loop through all imgset(), load by filename, and append the images to the img() array. There is no more .ord (ordering). Every image in img() now has x,y, which is the location on the bitmap, as well as 'set'. 'set' is not edited in the bitmap map editor, but assigned according to which order the bitmap is loaded. (All images loaded from imgset(2).filename get .set=2.) So now each image has a .set and the coordinates on the bmp, so that when selecting a new image/object, all the images are drawn using their own info, and they recreate the .bmp in a new, sliced, presentation.
Oct 23, 2009
It's very difficult to get the engine to use multiple image sets. Each object must keep track of the set and set index number it originates from. I may have to rewrite a large part of the engine to do this. Everything references img() as the be-all images index. That is but one array of images.
Making it multi-dimension may work, but it wouldn't be optimal, because every set would have to have the same amount of image slots. I'd be wasting a lot of integers and integer pointers on image slots that were not being used. It's very likely that some image sets will be hundreds of images, while others perhaps just tens. img(1 to 5[sets], 1 to 300[images]), this is 1500 slots, 24000 bytes / 23.4 KB, with possibly only half of it or less being used. Come to think of it, that's not a big deal! If it's not difficult to program, I may go with it.
Oct 6, 2009
Revamped entire ATII engine and cleaned code. Lots of tossing, optimizing, renaming. Map is sorted by each object's .ord attribute, based on y-position. Flat objects are sorted separately and can be overlayed in any order based on .z attribute. There's no longer an issue with layering. I'm now working more on triggers and event calls to make the game come alive with story.
Sept 26, 2009
Revamped SpriteDev to have a hue-based RGB color chart with saturation and lightness. And that took me days of agony to figure out, with no response on the forums. Now every color is available rather than just a palette. I've found that one can make his own palette as he draws the images with certain colors. Then you can just extract those colors so you maintain consistancy. Then I swapped hundreds of colors to attain the brightness and contrast I got when I edited a screenshot. Looks much better now.
Sept 20, 2009
Something very interesting. I added 17 contrast and 20 intensity to the screenshot of the map engine and it looks awesome. somehow i've got to either change the actual graphics colors are get some code that does this in the game.
Sept 19, 2009
Improved SpriteDev and ATII engine. Drew some more graphics and importing a lot of graphics from the 20x20 tile sets. It's rough dealing with the size difference but I'm able to edit them well enough. I have pretty nice looking town buildings and roads, and water with cliffed shores and animations. Everything runs fast. Also have new option menus that work with the mouse. There's nearly nothing wrong with the engine, but for flat images, which sometimes do not overlap properly since they are not Z-ordered like upright images. Otherwise I just need to draw lots more graphics.
May 24, 2009
fixed image ordering in SpriteDev. now you can put the images in any order without changing the image data itself. this will be really useful for grouping similar images together (trees, flowers, grass) and keeping the index organized. most importantly it won't change the maps you've already created if you decide to go add some new images and need to group them in with older images.
Aug 17, 2008
fixed PC and NPC ordering. they can walk around each other in 3D now. made a backup of MapEditor.BAS because i want to try to get rid of the ord() array. not sure why i did it in the first place. each object could probably be ordered with a property, like mo(n).ord. why not? well, i'm going to see. well, i quickly figured out why. it's very helpful to have an ord() array. i think i'll leave it.
also, fixed rtrnObj by determining which object has the highest order number (and is therefore layered in the front) if more than one object is selected under the mouse click, and returning this one. it's just more logical. but i might want to allow the user to select behind objects as well, since they can get burried and difficult to move. another great improvement: objects can be force ordered using a similar idea i had earlier, mo().ord. this is useful when flat ground tiles need to be pushed backward to allow others to show, like rougher grass on top of regular grass. any tile can be force ordered forward or backward.
the engine is looking better than ever. i just added the effect of the PC carrying a lantern in the darkness. a tint of any color can be layered over the map to create an atmosphere. the best-looking is blue-black for night time. i cut a hole that follows the main character to create a lantern effect.
Aug 14, 2008
rewrote the code for showing the images. so now, you can scroll up and down of the image list gets long in both SpriteDev and in the game engine. it's really nice now. also, you can sort the images! so adding and deleting images does not effects the maps made in the game engine. everything is visually sorted.
Aug 10, 2008
so, it has been exactly 6 years and 3 days since my first log entry. now, i'm married. a baby is due in late September. off and on i have worked on this project, this dream. what i have now is actually the peak of all time. two versions of SpriteDev, the second being written in Freebasic which can do everything i wanted. it's quite a nice miniature graphics editor for any project of mine. i've converted a lot of my old graphics to the new .sd2 format, and they load in my map editor. and my map editor can build maps with x,y, and z coordinants. the trouble i had for so long with layers, isn't really a problem anymore. the sollution was simple and took just an hour or so to code. sort everything by the y coordinate, it doesn't matter what the z coordinate is...! z just raises the image upward on the screen, but the y is still down low. this gives the effect that you are lifting the image up and not moving it upon the surface of the ground. i got the idea from Roller Coaster Tycoon 2 which me and poppy have been playing. she's playing it right now actually. it's isometric which i really envy, i love the engine. but it uses that idea of z as just raising an object. it can easily fool you and appear you've moved an object to another ground position, but you actually just raised it. when you see the shadow, you understand.
i took a screenshot of this work because it's the best so far. it's like the old and the new can finally unite. i don't know what happened, honestly. i'm lost. i had a lot of ideas and i went off down a lot of branch-projects, i forgot what my original goal was. but all my work is still here and i'm pleasantly surprised to find some intuitive designs here and there. cutting the crap, and working with what i have, i should be able to finally steer this thing towards something really wonderful. a strong, robust working set of engines that operate a living breathing fantasy world in which stories can take place. but the building has been the funnest part. all this progress of learning and thinking and re-thinking has been the joy. i'm sure it has developed some part of my brain as well. the knowledge i've got from it, the ability to construct engines out of logic regardless of the language used, is a pretty valueable thing.
well, that's all for now. maybe i'll go in there and kick some more butt. it's been a great project.
Mar 13, 2008
instead of the whole game being scripted, i want to just use modules i think. there could be a few generic modules that any story could be designed from. so if you want to run the core engine for a different game, you just build the game using those modules. the core is a module or set of modules that does not change, whereas the others do.
what i want to do is choose a graphics format. BMP happens to actually be smaller than my SD2 format. when i was using 256 colors, IMG format was awesome, very small and palette based. it's still possible to go this route using a 8bit resolution. PSET and POINT would return palette color index numbers. but i think i want to stick with higher color. i dont care too much about file size. i could build in basic compression. so the choice here is high color with custom palettes as base colors.
next rebuild the map editor. so that it uses pointers and creates spaces for the images. then i can start up with the game itself.
Feb 24, 2008
it's been another long time. time moves fast. for some reason i jumped back into programming. i started working on IF, with success. but i think because poppy cannot appreciate any progress with an IF, i need another project too. i'm returning to my rpg engine. i drew some graphics using Corel Draw. it was a fuss to use and annoyed me. then i switched to Photo Paint and that was better. i completed some nice looking graphics. then i was confused how to remake my engine to load them. posted a comparison topic on freebasic games forum. most people liked the looks of my OLD engine better than the new graphics i'd drawn. so i'm returning to there. except now i might switch to higher color. i looked at PNG format and it's complicated. but Photo Paint saves in that format and it's lightweight and lossless. however so is my own sprite editor which i might rebuild once again to use high color. then it's just a matter of loading more bytes per pixel.
Oct 30, 2006
oh boy i'm tired. it is 1:36 AM. i got triggers to work rather nicely. i didn't really like the idea of them being stored different than objects. i mean, usually it's an object that's going to have a trigger. even if not, and you only want a static trigger on the map, you can create an invisible object. i'll prolly make a special icon for it so you can find it easy on the map--just invisible durring gameplay.
anyway the character walked on the grass tile, the tile had options set to read a script filename when you do, and it ran. yes every object has the capability of reading a personal script. it also sends it a keyword on reading so that you know what the character did or is trying to do. and it doesn't always depend on the character! i think probably all object scripts will be run with the Always keyword, only executing Always functions. so that it will move to and from its destination points, for instance. a tricky thing would be to pass arguments to the scripts. that would be awefully useful. you could then send the NPC that walked on it. then again, you could just send "NPC_Walk_On" or something, and let the script search for which one.
in either case, the script interpreter needs to be a little more intelligent. i'm sure i could do it with a lot of work, but it needs to be able to run miniature programs. it's the logic that needs work. being able to determine complex IF/AND/OR/THEN/ELSE etc.
i wonder if when i get this all working, i won't have this sudden enlightenment that -everything- should revolve around scripts, and i should really give my entire program another work-over. lol .i wouldn't be surprised. its my nature to constantly refine processes of all kinds. can it be done better? simpler? more effective as well? there's a part of me that does battle tho. it wants to just get by with the easiest way, but just be really enthusiastic and creative to make up for it. to make up for lack of dynamics. like instead of learning how to use your mind, get a job breaking stone with a sledge hammer, and put your whole heart into it. it's just part of life, and you go home and make sweet love with your wife. but a mentally-driven person (who sometimes lacks the love and creativity) can often rework things to a tight uniform and fluent process. concientious and having an eye for detail.
well enough rambling. i'll strike a balance somewhere. improvements always come in steps anyway. in another game, maybe it will all be different.
Oct 29, 2006
Wow. i just dug my project back open yesterday and today for the first time in months. i don't give up! i fussed with images suddenly not loading right in MapEditor. after a couple hours i realized images with dimensions that end up uneven can't be loaded correctly. there's some notes in the code to help remind me. (that is 9x7 = 63, uneven, bad. 9x6 is ok.)
i also completely scrapped my graphics. well, i'm sure i'll pick and choose the sprites i like, but Arion is gone. i don't know why suddenly i didn't like any of it. i had memories of the tile-by-tile restrictions i used to design with and i even liked -those- better! that was years ago. but i realized it's not the formality of tiles that really makes it nice. it's having carefully-drawn sprites, where especially characters follow a certain drawing rule, -all- of them. there is uniform in that, and it looks good. likely i won't even touch my old storyline either. because -i've- changed. i don't know if i care too much for Evil and Elves. perhaps i will include monsters you must battle. i don't think it would be discomforting to Jehovah. some fantasy is okay, kept innocent. not gore. not warlords and vile garbage. but is there harm in some ugly giant frogs that want to eat you? in games, it seems there always must be a bad guy, or an enemy. i think discernment is necessary, just like in all things in life, like drinking wine. a little is okay. a lot is too much.
anyway, i have a functioning world. it is so amazing. :) finally the walls look real, the table and floor. i haven't drawn a lot of sprites, but it is -so important- to take your time until they look right. but right now i feel like the map engine is like, -seamless-. it's so tight. it's so versatile. just seeing the character walk around in the room i made. just seeing hardwood floors and a table with a vase and flowers, and knowing that i can draw endless vases and endless flowers and mix them any way i like! and seeing the character walk behind the table when he's behind it, and in front when he's before it--the 3D effect i've been working on for so long. and can he walk right thru it or on top of it? no! it has solidity! the world is solid! it's perfect. the goals now are overall operation, especially scripts, and NPCs: people and animals. of course i've got all kinds of awesome ideas too, like personality maps and intelligence, and character skills and attributes. i can't wait. :)
rough following summary of -my- written code.
1470 Lines of code in MapEditor
2688 Lines of code in SpriteDev
377 Lines of code in ToadScr
Total : 4535 Lines of code in over six years of work.
Jun 16, 2006
awesome sweet pineapple crumbcake! NPCs now have a memory of destinations they want to go. they will walk there, look in any direction you choose, wait for awhile, then procede to the next point, wait a different amount of time. -and- there's the option of them looping back to point 1 at any given time, or jumping to a random point, or reversing the entire cycle. :) the FPS is still nearly 40 while one NPC is walking along with the PC, on a map of a few over a hundred objects. that's about right because i never planned the maps being huge. scrolling map objects, now that i think about it, would -have- to be the biggest use of FPS because there can be hundreds of them. moderate size maps that use a couple screens in both directions aren't even bothering the FPS it seems. that's sweet. i might do some animals next, i don't know. i want the game to come alive!! muahahaa. =]
Jun 14, 2006
ugh. what a lot of work. i need something to eat. i feel fatigued with cold waves going down my body and a warm forehead. i mean i get that almost everyday anyway but it's time for a break.
there are now NPCs in the engine. you can set their attributes in a script, give them a walking destination, and they will walk there. the intelligence of walking is really low, just head straight for the point. for manual scripts that's fine, and it will suit most needs. they are even layered into the map correctly so they go in front of and behind objects. i don't know how much the fps will slow as more NPCs are created, but it does scroll thru them twice every frame i believe. one idea to get rid of one cycle would be have an ord() array for NPCs, like there is for map objects. once sorted, they are just placed in order with the map objects instead of having to be tested for their order number.
there should also be something like regions. NPC is just one array, so it tends to get cycled a lot no matter where in the whole fantasy world the NPCs are. and it has to be that way. so even tho you only draw the NPCs on the current map, you still have to cycle all of them to find out if they're on that map. that's the thing that takes the FPS, the cycling, but oh well. if there are only 25 characters in the game that may not slow the FPS too bad.
i was thinking of also designing a coordinate pending array for each NPC. like dx(),dy() or something so they can have a schedual of places to go. that whole schedual can change later in the script but at least this way there's not constant changes in the script.
anycase, interaction with NPCs is going to be a tough cookie. i suppose i'll use inRange to see if you're near an NPC when you want to do something with him. and when you do i suppose a script should be run, his personal script. a good idea at this point would be to take a look at the overall matrix of the thing. that way i can code into that outline and things will run smoothly.
it's suprising i've even started this project back up. it's true i'm not over the mountain yet, but i'm further than i ever have been. i'm always affraid i'll come to some dead end, like terrible FPS, or no way to get everything to work in harmony. as i mine thru these caves the walls get closer, and i barely make it thru. it is possible however to backtrack and widen the halls so that everything is free-flowing. that's basically what i've done over and over with this project thru the past six years. i did spend about the entire day working on this game, but i know it won't always be like that. it shouldn't be, because it's just a project. i need to keep my priorities in order. it does give you a sense of accomplishment tho, like you could do anything. i almost want to go spend this much energy researching Bible history, just to have it in my head, just to glean value from it in seeing Jehovah's personality. for some reason this is easier because it's all logic. but anyhow, i think i should do some study.
to get everything running, all parts of the engine turning, gears rotating, pistons jumping, is my goal. with a strong body you can do many things. but it is not complete right now. the fantasy world is coming together and you can walk thru it, and you can build on it, but it's not quite alive yet. when rivers flow, a bunny hops around in the grass, characters are walking around with scheduals, and you can talk to them, buy things, learn, read, open doors, explore upper rooms... then, yes then my game will be ready. then all it will be a matter of is writing some scripts and implanting a storyline.
Jun 12, 2006
wow. the scripting engine works three times better than i thought it would. it should be no real problem to write cut-scene scripts as well as short in-game ones, and even link them to each other. with a working map and script engine like no other i've ever made, it's pretty exciting. :)
Jun 11, 2006
map engine works pretty well, but not perfect. some tweeking has to be done in order to get tall objects to stand in front of multi-story buildings, for instance. in simple circumstances this is easily done, but i could run into trouble later. plus it's just not accurate. but if on making some complex maps tweeking works out, i'll just leave it. the engine and collisions and layering is perfect besides that.
Dec 27, 2005 | 12:17 PM
last night i got pointers to work with the scripting engine. it was much easier than i thought. game variables can now be tested and modified and even printed in the middle of a string of text.
Dec 13, 2005 | 4 PM
wow, i was able to check off seven things on the to-do list today. i'm astonished to see the editor working as good as i hoped. in fact, i did some of the hardest things already.
Dec 12, 2005 | 2:40 AM
SpriteDev is functioning well with most features completed. it's blimey 2:42 AM and i've been working on the map editor. the engine is built to work with one file, so all my map images are going to be in one file. they can be organized within it though, so that's fine. i'll impliment a feature to change one/all object's sprite index number in case i add an image in the middle of the set. it's exciting to see everything working. i'll even be able to, i hope, animate certain tiles with a script on every frame. okay, i need sleep. right after i make up a to-do list.
Feb 06, 2005
i would like to build this the best way possible. i'm not sure only 20x20 tiles to make maps is the best. nor am i sure 320x200 resolution is best. i'm thinking 320x240 would be nice, fitting more tiles onscreen. i've learned about sound, too. how to load mp3, midi, wav... all kinds of stuff with fmod.dll. right now i'm focusing on getting SpriteDev to work with different size images within one array, and saving up to 320x240 (this works right now.) i drew a picture of a mountain and saved it, loaded it fine into FB, fullscreen. reminded me of Lucas Art's games when it flashed up. so awesome!
Jan 21, 2005
porting the whole project over to FreeBasic! i just got the maps to load... it's all fun from here. time to really build a map editor, now.
Jan 15, 2005
SpriteDev is workable and pretty much done. it's a little rough but i don't plan on releasing it. it's mostly cosmetic stuff. as long as i can create my graphics. now i've made a copy of the map editor so i can mess with it all i want. i'll try and get the .img files to load instead of .put, and do as much structural work on it as i can.
Nov 29, 2004
i'm going to work on the project once again. SpriteDev in VB is coming along really nicely. it's almost done. i've got a new palette for the graphics and will soon be organizing the image files. this could be really fun. my goals: to get the map editor working beautifully and make sure it runs the same on all systems. i'll think of the best possible editor features before accepting it as completed.
June 30, 2004
Wow, it's been a long time. This log will now end. The project is being resumed after a long time, and my girlfriend Allison is helping, along with Hannah Folsom, Kevin Miller, and Aaron Smith. Blue Castle will be rebuilt for us. Things have really changed.
May 29, 2003
This project has exploded. Graphics are displayed from the file and not loaded into memory. This may not be efficient later on but it's awesome right now. I have fall-back ideas too. So much more memory available. I've learned a ton about binary files and memory. I'm designing functions for the character's stats to be stored in a binary also. They're almost done, and NPCs are next. But first i'm going to decide how many layers the maps should have. I changed the map file format and all maps are perfect now, with back tiles stored first, then fore tiles. I'm thinking of adding another layer, or maybe a z coordinate or something. Like UO. There's a ton of possibilities now that i'm mastering my use of memory and keeping it available. I'm going to do some planning before going too far. There's no telling what this game could turn into. Almost every engine has been redone at least a little, except the battle and barter engines, which i'll save for much later and do a major revamp on them.
The scripting engine has been optimized, comments and block comments are excepted, the scripting code has been simplified so scripts are a little smaller. It's still a string testing engine but speed doesn't seem to be an issue. It'll be cool for awhile.
The main character doesn't have an intelligence variable. He has skills. Mechanics, swordsmanship, throwing, and more.
Sooner or later i'll pull the main character's sprites from their binary files as well as clothing, freeing up more memory and allowing for more images.
April 1, 2003
Frame rate wasn't the problem. It was INP(96) + winXP. In dos it does well. For now I'm using INKEY$ again for character movement. Project is wide-open right now, everything's getting optimized and worked over. I've learned a lot about memory conserving techniques, so everything's getting organized and reworked.
March 21, 2003
Having trouble with frame rate. Or is that the source of this problem? The player moves at varying speeds while you hold a direction. Always a fast accelleration, and then he slows down as if suddenly tired, and over again. I took out every possible peice of code that could be making this happen, and it still happens. I tried just a box instead of his sprite, not displaying the MainPg buffer at all, I tried taking out the loop that waits for the keyboard to clear, I tried taking away WAIT, and many combinations. This is a very annoying bug that may or may not be easy to fix.
Feb 19, 2003
Hurray! ATII up and running again! Right now the maps are displaying correctly, the menus and fonts are working, and I've set it up to where you need only press F9 to view a complete memory-report at any time durring the game. The character walks at a inconsistent speed, and there are several other small bugs but things are looking very up.
When memory gets low, as it does when I load all the usual images, the tiles output corruptly and the map looks like trash. There's a fine line between displaying a tile incorrectly and running low on memory, because the output is very similar. This means I'm going to be careful with my memory usage, and I must bring it down somehow.
I plan to rebuild anything that needs it. There's a lot that will stay the same, but I'm sure there will be a ton of change. And I must keep reminding myself that, I'm pretty sure, each module is independent from the others except for COMMON variables, and those do add up. However, they don't add up too much, and NavMod.QBX should be okay by itself, but it would never be able to mix in with another module. If I can't think up any other collision-engine ideas, this one may stay. And that's really good because the battle engine and even the menu engine - very good engines and crucial - will be okay as long as they are in their own module.
Feb 17, 2003
Well... here I am again. Can you believe it? I gave up on the project for this long and I'm returning to it. I never learned c++, I learned some pascal. But honestly, I don't know what to do. It feels like I could finish this project in QB because it's compiling - just not running.
There's also a VB engine that fling master made that uses directX and it's really cool. It's the first time I've seen such a nice rpg engine in VB. Plus, it looks just like QB. Same screen res.
For now I'm going to play with the code and try and clean it up some. Do *something*. The NAVMOD stuff might end up going in the trash because the arrays it uses are mondo huge. But, now that I think about it.. that's why it's in it's own module and not shared with the others. And that's why this program should compile and run fine!
I've got a lot of work and decision making ahead.
September 18, 2002
Okay, screw it. Yeah everything would work out and eventually I'd get this thing going, right? Here's my NeoBoard post:
"My new firm opinion is that Qbasic, Link, BC, regaurdless of version are plain terrible for programs over a few modules in size.
So here I sit after years of coding, and all the time I had in mind a finished, detailed RPG with decent graphics, music, a wonderful storyline and all those things every programer wants. And I was almost there.
I've got all that stuff and more. But does BC compile correct? No. Does Link do it's job? Of course not. Does QB run my program? Not at all.
It's only 9 modules... :) Tenshi seems to be having success with many more than that, though. How he does it is beyond me.
When I run a memory test, everything seems fine. Once I got it to run in the IDE. Then I decided I'd simply swap my graphics routines with some better ones, and everything chokes.
It's just not fun. I'm sick of it. If someone out there could take it in their hands and fix it, I'd be really amazed. But reguardless, QB and it's utilities just aren't made for programs this big.
I'm going to learn c++. I like the ++ part because it offers incredible features for RPGs. And John Millard (JTM) has made a most incredible engine with lighting effects, particles, sight ranges, plus a perfect scripting engine and all the other nameless jazz of RPG building.
It's *such* a crap that there are so many cool QBers and not so many cool c'ers... man that even sounds like crap.
I just want to make a freaking RPG that works!
Anybody want my entire project? I think I'm going to abandon it for awhile. Just er... don't use my graphics without permission... and stuff. :(
Alvarian Tales Book II
The Elven Aegis
Project as of September 18, 2002
Well, onto C++"
RELASM is some kind of ASM turned into QB code. Anyway, it works faster than anything I've tried before, and Relsoft made it for me custom. It's pretty basic and should be easy to impliment.
Quick Note: RELASM (qbasic\resources\RelAsm\RelAsm.QBX) is the same as ATIIASM.QBX *except* ATIIASM.QBX leaves out the MakeImageIndex and InitImageData subroutines because they already exist in another module in the ATII project, as well as rids of the demo code to illustrate the way it works. Therefore, it's only the bare necessities.
Aug 27, 2002
I've decided not to give up on ATII at all, and I'm returning to coding. RelMod has been eliminated from the picture. I'm now using RelLib, which I believe uses DirectQB routines, perhaps modified, in any case it seems simple and the results are beautiful. This may or may not work out. Already, as I've added the lib into the compiling batch file, I get BC: Out of Memory. But, being I'm open to modify any of my engines to work better, and being that QBProgger said I could actually simplify greatly, I know that I can get this to work and have even better results in the end.
Good news is I've added a feature where the player can dress up in shirts, pants, and cloaks in any combination, or run around in his underwear for that matter. Yes, the player is dressed according to what you dress him in. This should be great fun later when finding black cloaks, powerful armor, torn pants comes into the scripts.
Aug 7, 2002
RelMod had initiated the whole move-to-c++-process because it was then that I realized the QB7.1 linker doesn't like more than 6 modules or something like that, or perhaps it has a limit on the amount of kb it can link... whatever, it doesn't matter. Therefore I cannot use RelMod in this project. Nonetheless I have a feeling this will rush things a bit more, being that ATII is not my *life* anymore, nor my ultimate creation for gaining attention from. I'll wrap things up nicely by finishing the storyline and implementing it into the scripts.
I have not run into any other severe errors yet, but likely there will be some. Pessimistic? Probably, but past months have shown that this project has done several things for me: headaches, greatly improved knowledge as respects Qbasic and coding in general, more headaches, frustrations and greater understanding of Qbasic and c++ as languages in contrast.