I have been investigating and thinking about this for a day now, I tried to make a collada (.dae) file loader but its a bit complex and I dont have the energy to experiment in order to figure out what is what and how it works. I would rather write my own animation tool and I will do that in the future, but then it will be a situation were theyre programmer tools and not just anyone can figure out how to use them... We could use the Labyrinth "engine" but it eats ram like a black hole and doing different weapons would be a proper pain to go through, hmm actually now that I think of it, well yea it would be a pain cos you dont want just a few types like rifle and pistol and so on you really want custom graphics for special weapons and you cant attach a weapon to hmmm or could you? YES YOU COULD!
Allright, so you can create a model in blender, then pick a triangle on the hand, and apply a different texture to it, and in the .obj file you will see wich triangle use that texture and you can save it to a special reference and use vertice A to apply to the weapons position and vertice B and C to make dot product to get the angle for weapon! Then anyone can still use Blender to make characters and animation! It will still eat a ton of RAM to load all frames for a model, you need according to my eyes minimum 40 frames of animation per second for the movement to look smooth enough, and then different people are different sensitive to judder... And loading all that data takes a long time. But atleast its possible to do at all with very little skill.
But I need to make a new level system, we couldnt use a block system for this it eats to much ram and graphics will be to crap and to many triangles wasted on parts that cant be seen. We should draw lines around the area, that should be easy to process, but the lines have to be drawned manually, then in Blender seperate floor from rest of level and save in different files, then you get as few polygons as possible to process with barycentric calculation to get the height for character and the position that can be looked up in a texture to get shadow value, if we would handdraw shadows to a seperate textures, it would make a major difference for graphics but it would require much more texture and painful work, lets skip any light data, just do static light. Actually it wouldnt be that much work to do shadows, lets do it for outside areas, and inside areas can contain other textures.
So each triangle have 2 textures, the main surface texture, then for outside areas a shadow texture. For inside areas an emmission texture, the color data on the emmission texture will remain bright in an area that has had its light dimmed temporarily. Characters have emmission textures to. Levels can make use of 2 sets of texture maps, the second containing animations, since binding textures creates a lot of drawcalls that will slow down the framerate and limit how many polys you can have in a scene I think its a good solution to put all individual textures side by side in a large one and then when you load a level I add in the data so the texture coordinates fetch the proper area and so on. I have no idea how many polys the Pyra will be able to handle, but lets guess at 50 000 in a scene, thats the level, characters, items, everything INCLUDING the polygons used to display the OSD graphics! I could use 20 000 in Labyrinth on Pandora but framerate was quite poor, and here there will be more drawcalls also.
Fuck yea Im getting excited now!
I will put together the technology asap! But I will not be making this game alone, I wont do much work on it at all other then getting the core tech in place, then I hope other people will create content, design and code gameplay and so on, and I can make a character or item every once in a while or something. The code should be simple enough that anyone who know basic C should be able to code gameplay like make what strenght and defense a character should have such abilities and when you pick up an item that increases strenght that value increases and so on. No one should ever have to touch the render system, just add the data by copy paste a model and replace some names in the text and a new object will be there in the game to interact with. So how many people are interested in creating content or coding gameplay functionality and design of gameplay?
I propose the battle mechanic should be 0.5 second segments and if triggered one after another different moves would be activated, I made a scetch like this:
class object{
public:
float *vertices;
float *texture_coordinates;
float *animation_attack_light;
float *animation_attack_heavy;
float *animation_attack_final;
float *animation_walk;
float *animation_activate;
float position[3];
int hitpoints;
}
I made a few more variables but no need to write it here, so to interact with a object wich could be your character or an enemy or basically anything, type something like this:
player.position[0] += 1.0;
player.hitpoints -= enemy_robot_damage;
player.animation_select = player_attack_heavy;
player.animation_time = current_time - player.animation_beginning.
render(player);
so in the object class feel free to suggest what to put there or if gameplay should be designed in another fashion?
And also a lot of animations will be required, different walking animations for each class of weapons you might carry and so on, and all animations must fit into ram at same time cos it would take to long to load new data in the middle of the game, especially in multiplayer you cant pause the game for others just to change weapons constantly.
So what you think guys?