# Unity The GDNET Progress of an Isometric Game Award of the Year [2004-] Goes to:

This topic is 4729 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Raymond Jacobs (EDI) [cool][grin][smile] There are many people working on RPGs and Isometric engines here on gamedev but few get them to a respectable state. For whatever reasons, usually to do with constraints (life, time, medium) this simply rarely happens. Two engines, however, have risen above the rest and attained that lofty plane. And another has transcended all bounds and can actually be called an Isometric RPG with story. These engines are the ones by VertexNormal and of course, EDI, respectively. VertexNormal's engine was based on OpenGL and was quite technically impressive. The screens are long gone from his site it seems, however I will make guess on its features based on screens I can recall. The game featured lighting, random level generation, items and inventory, animation, fighting and could actually be called an RPG. He nonetheless quit for reasons I am sure are quite similar to mine, which i will expound on in a bit. EDIs project is based on Directdraw and has lighting, animations, fighting, inventory/items, comprehensive interface... actually I would not be in the wrong to state that listing all its features would prove to be too time consuming. It is basically a game now. I look at EDIs project and say to myself, "Wow, this project might well see the end of the tunnel!" That you, EDI, stuck to the original engine and are entering a state that the story can begin to be fleshedout is quite impressive. You have my respect man, your willpower is most impressive. It is unfortunate that all I can do is rate you higher and buy the game when it is released. Nonetheless keep up up the good work and make sure you finish, there are those like me who are counting on you to do what they could not. [smile]. Also, impressive job on creating an 8 page thread in the Isometric Forum ----------

##### Share on other sites
I don't know if this belongs here Raymond, but if it is cluttering your space say so and I will remove it to its own thread but these thoughts are what made me admire your dedication. I just jumped from technology to technology never getting very far with regards to the game itself.

In other Events: Why the Chaos Engine [mine] failed

That my game would fail is obvious in hindsight. My only prior programming experience were little demos in QBASIC (text rpg, 2d engine quite impressive actually [had GUI, mouse, used EMS, anyone remember XMS and EMS?]) and a ModeX software renderer (cant really call it that though, got only to .bmp textured cube, no shading) in Borland C++ 3.0 DOS. I had never actually made a game.

I started the game as a 2D Topdown Sprite Engine RPG using the GDI and Visual Basic. I got it to a state where I could walk around a town and talk before I decided I wanted to use directdraw and also make the game Isometric. So I switched over to C++ and kept the same Visual Basic way of programming. Not good. Nonetheless I was able to get a basic Map drawn with NPCs walking about. I then decided to switch to Direct3D so I could take advantage of stuff and by then I was a much better (This is over years mind you, and I often took many coding breaks of many months in length.) . I was actually able to develop the engine to a state comparable with the two mentioned above but lost motivation due to the annoyance generated by the hacks required to make the Graphics Engine anywhere near modern standards.

These include the ability to change armour, dynamic shadows, heightmapping and recognizing what side of the slope you are on, proper cliffs, walls, Flexible Collision Detection,occlusion of light and sight, limits in comprehensive animations and others I am unable to recall at the moment. The hacks required to get those up were depressing. I also wished to add reflections but was unsure as to how to approach that. I also wanted a method that would blend tiles without extra graphics. No dice. Support for male/female and any race was also unattainable. There was however, a much greater hurdle for my motivation to cross.

The engine had reached a sprawling state reminiscent of palaces that have existed for generations and have had additions that have been placed with little thought for structure or continuity and look quite ugly and near collapse. For me I simply stuck the Diret3D based renderer next to the directdraw based graphics engine. Bascially the directdraw was left there to rot. That fact and the fact that many concepts were there which were based on an concepts dating all the way to my qbasic day was another. The code was ugly. I was working on an editor which I can honestly say approached the aurora toolset in thoroughness. With it, if it finished you could make an entire game. It never finished and the game stagnated. The features listed below including the hacks above are what I was able to implement.

• Perlin Noise Based Heightmapping

• Random 2D Sinusoids and minute Heightmaps for Water

• Support for Fairly Comprehensive n frame Animations

• Comprehensive Particle Engine Could do any effect (from lightning to
tornadoes to wormholes and scintillating globes)

• Basic Random Town and Outdoor Generation (never got to indoors)

• NPCs who could walk and Talk

• Editor in which you could design levels (move, delete, insert) and add
NPCs and give them text with responses that could launch events and scripts,
place lights, set collision rects, triggers and more.

• Particle effects editor

• Scripting Language based on Small (similar to C) with a mini IDE.

• A* based Pathfinding

• Unique Method for Collision Setting

• Mouse Hovering and selecting. Fast

• MultiTexturing and bumpmapping

• No Mousemaps [smile]

• object stacking

I have some screens below, which unfortunately are not up to date (months out of date), relatively speaking (haven't worked on it since August of 2004). The game and editor were in a broken state when I left them. I still do not fill up to fixing them. Maybe someday...

Directdraw - Ill point out that all my Directdraw engine could do was draw
stuff, no shadows, lights,blending or any of that fancy stuff

Direct3D

I nonetheless plan on describing how I did what I did, though I doubt interest will exist in anything that is not 3D. And have already extracted a fair amount of the graphics engine into an easy to use library...

Perhaps I am overstepping my bounds in this but if you could describe and espouse your reasons for terminating your project VertexNormal, when , if, you ever find the time of course, twould be nice. And that is even if you ever happen upon this thread.
--------------

[Edited by - Daerax on March 3, 2005 11:03:31 AM]

##### Share on other sites
Damn. Makes me want to pick Golem back up again... [grin] Seriously, though, I really might resurrect it using some of the new backend developed as part of the Accidental project. We'll have to see...

FWIW, the Golem site went down briefly due to my mistakenly uploading debug rather than release versions of my Accidental Engine binaries and going over size limits. It's back up now, and soon to possibly have a facelift.

EDIT: BTW, as for reasons for shelving it in the first place, the number one reason was poor design in the scripting backend. Up to a point, the functionality I implemented was sufficient for generation of simple levels, but more complex levels and intricate rules and interactions scripting for quests was tricky and confusing. I was also discouraged by the relatively intensive memory requirements of 32-bit sprite animations.

With the Accidental project, I created a level generation backend that is much cleaner to use. I have also developed a hybrid 2D/3D rendering engine that renders levels exactly the same as the original Golem engine appearance-wise, but which uses 3D and the z-buffer to handle some of the trickier aspects of proper sprite sorting that occasionally cropped up in the initial engine. The hybrid system also adds support for the fully 3D animated models from the Golem3D engine framework, thus helping to lessen the memory requirements.

In short, with some redesign and with a lot of the lessons I have learned since I first started the initial project, I think I could build a far more solid engine, and am seriously considering resurrecting the project.

[Edited by - VertexNormal on March 3, 2005 9:13:55 AM]

##### Share on other sites
Oh good [smile].

For me all that is left is a hope that someday I will magically finish. But at this time I have too much on my plate to return to the project. Hmm... People do say that I eat too much.

EDIT: I like how I am able to travel to the past and edit my posts before I post them. [grin]. I will probably end up giving the the code away.

From the Collision Rects Modelling Tool.

Crazy. Allowed you to Make rects as small as a pixel or as large as whatever for all the .bmps and thus was shared by all sprites in load time.

[Edited by - Daerax on March 3, 2005 2:48:41 AM]

##### Share on other sites
*speachless*

Hehe, I don't know what to say :-D

Except that I am just so flattered!

Lately things have just been going from good to better.

It should be noted, that while I started things and have played a big part in the development of Morning's Wrath, equal shares of credit belong to my wonderful team.

Zac Todd - Writer,Designer,Scripter
Morgan Chaput - Sketch Artist
Aaron Brown - Sound Effects Artist
Jenna Hoffstein - 3D Character Artist

And Past Members:
Billy Zimmerman - Programmer

I would also like to recognize people who have directly given help to the project on a voluentary basis:
Casey (caffineaddict) Wireman - Website Manager
Corbin (Tarviathun) Hart - Writer
Justin Smith - PR Manager
Corey (visage) - Designer

And to everyone who stands out in my mind as supporters:

VertexNormal
GraveyardFilla
Talroth
Turt99
Mysty
kSquared
Woodsman
RobLoach
FProto
CrazyMike
Oluseyi
EmmanuelDeloget
h_o_p_s
Tower888
Extrarius
Grozzler
And Many More...

Again, thank you =) this will be a great morale boost for our team.

P.S. The Beta is coming _very_ _very_ soon =D

[Edited by - EDI on March 3, 2005 8:15:36 AM]

##### Share on other sites
Quote:
 Jenna Hoffstein - 3D Character Artist

I whole heartedly agree! In the small amount of time I worked on the game, Raymond proved to be a capable leader with passion and talent, much deserving of praise. Not only that, but he has established a dedicated team who are willing to put in their all for a unified vision. That alone is a miracle.

This game has made great progress, and promises to be fantastic. Also, its an adventure game! That alone is awesome!

Edit: Some spelling clean up ;)

[Edited by - visage on March 3, 2005 6:33:26 PM]

##### Share on other sites
Wow, I made the supporters list, and I was beginning to think that my constant comments might be getting annoying to the team..

I personally decided that to track the progress of EDI's Team because it makes me feel that the game I dream of are actually possible, and I want to help them and give them encouragement to complete their project.

##### Share on other sites
@EDI :

I understand the difficulties involved in creating and sustaining an indie game, especially when one has a job. Just wanted you to know that others notice and care. I have followed your progress for years and as you said the growth of recent times is greatly accelerated, deserving praise. So also do all those who catered for this sudden growth. I must admit that your new 3D artist has allowed your game to achieve a new level of visual quality. She also deserves praise. Artists often go un recognized.

##### Share on other sites
I whole heartedly agree with the award. I think that EDI and his team have done a great job. To be honest, I haven't done too terribly much, so I wouldn't include myself in that list. Good work, Raymond. We'lre all looking forward to this game.

Great job, guys!

##### Share on other sites
w00t I made the list. ;)

##### Share on other sites
Quote:
 Original post by EDIP.S. The Beta is coming _very_ _very_ soon =D

HOW SOON?!!!
I hope that WINE can run it, because I'm on linux for good now :)

##### Share on other sites
hehe, Not as soon as tomorrow, but sooner than thanks giving =D

*gee thanks raymond, that really narrows it down.*

im not sure if wine will run it full featured *using d3d8*, however if it can run ddraw7, then you are all set, however, the game wont look nearly as nice.

##### Share on other sites
Quote:
 Original post by EDIhehe, Not as soon as tomorrow, but sooner than thanks giving =D*gee thanks raymond, that really narrows it down.*im not sure if wine will run it full featured *using d3d8*, however if it can run ddraw7, then you are all set, however, the game wont look nearly as nice.

What!! I missed this, when did this happen? The inclusion of the d3d8 renederer that is.

##### Share on other sites
oh, hmm, probably back around... july methinks.

so, a while ago =) it was the only way to get good alpha blending and lighting, and still have the game be fast enough for some serious battlage.

##### Share on other sites
not the -ONLY- way to get lighting and alpha blending... :P

##### Share on other sites
Quote:
 Original post by EDIhehe, Not as soon as tomorrow, but sooner than thanks giving =D*gee thanks raymond, that really narrows it down.*

well, just let me know :)
damn, this reminds me, I switched email, I'll need to sign up the mailing list again.

Quote:
 Original post by EDIim not sure if wine will run it full featured *using d3d8*, however if it can run ddraw7, then you are all set, however, the game wont look nearly as nice.

WINE can run applications using DX8 even DX8.1
WC3 is running preety good on my machine.

##### Share on other sites
Congrats everybody.
Daerax, 2D or not, I'd love to hear how you did it specifically the dynamics lights and shadows.

##### Share on other sites
The shadow and lighting parts were done in direct3d8 and while the techniques were custom, directdraw could simply not have performed the effects at a speed one would consider to be acceptable.

The shadows are simply the sprites themselves skewed, darkened and made to blend with the background. A tool was created that loaded the bitmaps and recognized the templates within. One could then set rectangular regions of any size (up to a pixel) that could not be occupied by another sprite. Within this tool was also the ability to set a shadow anchor point as some sprites shadows often seemed to be floating by them due to a discrepancy between the sprite and rectangle containing it. Some arbitrary point could not be defined to place shadows at that would look fine for all sprites.

To orient the shadows based on the angle they made the light I simply took the angle between a vector representing the light and another representing the object. This worked because if a vector was extended from the light to the object then the continuation of that vector would conicide exactly with a shadow vector. And to get a shadow projection vector? Simply rotate the object by the angle between this extened vector and the object.

The angle is then:
θ = cos-1  [   V.W   ]          [ |V| * |W|]

When I stopped, the objects simply looked for the lights in their vicinity and created and oriented a shadow for each light. Note that Recognition of quadrant was required to make this method work properly. And certain objects were not allowed to rotate their shadows (buildings).

The shadows were skewewed by adjusting the top left and right vertices making them look flat. The length of the shadow was found with this equation that was based on simple geometric principles.
LShadow = (hOject)[   DLight          ]                [ hLight - hObject]

Where D is the distance from the light. If the angle of the bottom left vertex of our skewed quad is θ then Δx = LShadow * cos(θ) and Δy = LShadow * sin(θ). Δx and Δy further skew our shadow. Playing with these and other values of the vertices can improve the look of the shadow. For example the tool which created template data (shadow anchor points, collision sectors data, maximum rotation angle) for each bitmap one could have it also have extrusion values for each vertex be either an absolute value or based on the length of the shadow.

Lights

Lights were done by having a tool that allowed you to choose the light color and power (in watts) from which the illuminance was calculated for the simple attenuation equation of:
E =  I      d2

If a minimum value for E is chose then it is possible to find the radius of the light.
                _____________     dmax =  / [    I    ]             √ [  Emin  ]

Dividing this value by tile width (tiles_radius) gave how many tiles to the right to go and looping from (LightTileX - tile_radius, LightY - Light_radius_) through to LightTileX + tile_radius, LightY + Light_radius_) each vertex was giving a value based on the distance from the light source. This value was a percentage defined as P = 1 - (d/dmax). These values were calculated once when a light was added, or again if deleted of moved and stored into the map. Multiple such lighting values could be stored per tile. Dynamic lights however, had to constantly delete , move then re-add themselves, making them quite power hungry. I was able to allieviate this a fair bit by giving them a higher E_min and creating a look up table for the square roots up to a relatively high value that was predicted as the maximum required for dynamic light distance calculations. When drawing the map each tile looped through all its lights and adjusted its diffuse color based on the equation:
FinalR      ( |LightR |   |ColorR| )        |ColorR|FinalG   =  ( |LightG | - |ColorG| ) * P +  |ColorG|FinalB      ( |LightB |   |ColorB| )        |ColorB|

Essentially moving the current diffuse value towards our light. For sprites which had any x,y location it made sense to define a 3x3 array which stored the final color for each tile on the screen and having the sprite find what vertex of the tile each of its corner is closest too and adjusting its color thus. If part of its self was outside the screen there was a choice to calculate this value or simply use 0xFFFFFFFF.

This is how I did it then ( near 2 years ago), I don't know if I would do it the same way again but I do not think the methods to be too bad.

[Edited by - Fruny on March 11, 2005 1:55:36 PM]

• 12
• 10
• 11
• 18
• 13
• ### Similar Content

• Hi fellow game devs,
First, I would like to apologize for the wall of text.
As you may notice I have been digging in vehicle simulation for some times now through my clutch question posts. And thanks to the generous help of you guys, especially @CombatWombat I have finished my clutch model (Really CombatWombat you deserve much more than a post upvote, I would buy you a drink if I could ha ha).
Now the final piece in my vehicle physic model is the differential. For now I have an open-differential model working quite well by just outputting torque 50-50 to left and right wheel. Now I would like to implement a Limited Slip Differential. I have very limited knowledge about LSD, and what I know about LSD is through readings on racer.nl documentation, watching Youtube videos, and playing around with games like Assetto Corsa and Project Cars. So this is what I understand so far:
- The LSD acts like an open-diff when there is no torque from engine applied to the input shaft of the diff. However, in clutch-type LSD there is still an amount of binding between the left and right wheel due to preload spring.
- When there is torque to the input shaft (on power and off power in 2 ways LSD), in ramp LSD, the ramp will push the clutch patch together, creating binding force. The amount of binding force depends on the amount of clutch patch and ramp angle, so the diff will not completely locked up and there is still difference in wheel speed between left and right wheel, but when the locking force is enough the diff will lock.
- There also something I'm not sure is the amount of torque ratio based on road resistance torque (rolling resistance I guess)., but since I cannot extract rolling resistance from the tire model I'm using (Unity wheelCollider), I think I would not use this approach. Instead I'm going to use the speed difference in left and right wheel, similar to torsen diff. Below is my rough model with the clutch type LSD:
speedDiff = leftWheelSpeed - rightWheelSpeed; //torque to differential input shaft. //first treat the diff as an open diff with equal torque to both wheels inputTorque = gearBoxTorque * 0.5f; //then modify torque to each wheel based on wheel speed difference //the difference in torque depends on speed difference, throttleInput (on/off power) //amount of locking force wanted at different amount of speed difference, //and preload force //torque to left wheel leftWheelTorque = inputTorque - (speedDiff * preLoadForce + lockingForce * throttleInput); //torque to right wheel rightWheelTorque = inputTorque + (speedDiff * preLoadForce + lockingForce * throttleInput); I'm putting throttle input in because from what I've read the amount of locking also depends on the amount of throttle input (harder throttle -> higher  torque input -> stronger locking). The model is nowhere near good, so please jump in and correct me.
Also I have a few questions:
- In torsen/geared LSD, is it correct that the diff actually never lock but only split torque based on bias ratio, which also based on speed difference between wheels? And does the bias only happen when the speed difference reaches the ratio (say 2:1 or 3:1) and below that it will act like an open diff, which basically like an open diff with an if statement to switch state?
- Is it correct that the amount of locking force in clutch LSD depends on amount of input torque? If so, what is the threshold of the input torque to "activate" the diff (start splitting torque)? How can I get the amount of torque bias ratio (in wheelTorque = inputTorque * biasRatio) based on the speed difference or rolling resistance at wheel?
- Is the speed at the input shaft of the diff always equals to the average speed of 2 wheels ie (left + right) / 2?
• By Estra
Memory Trees is a PC game and Life+Farming simulation game. Harvest Moon and Rune Factory , the game will be quite big. I believe that this will take a long time to finish
Looking for
Programmer
1 experience using Unity/C++
2 have a portfolio of Programmer
3 like RPG game ( Rune rune factory / zelda series / FF series )
4 Have responsibility + Time Management
and friendly easy working with others Programmer willing to use Skype for communication with team please E-mail me if you're interested
Split %: Revenue share. We can discuss. Fully Funded servers and contents
and friendly easy working with others willing to use Skype for communication with team please E-mail me if you're interested
we can talk more detail in Estherfanworld@gmail.com Don't comment here
Thank you so much for reading
Memory Trees : forget me not

Thank you so much for reading
Ps.Please make sure that you have unity skill and Have responsibility + Time Management,
because If not it will waste time not one but both of us

• We've now started desinging the 3rd level of "Something Ate My Alien".
This world is a gas planet, and all sorts of mayhem will be getting in our aliens way!
#screenshotsaturday

• Kepuh's Island is Multiplayer 3D Survival Game where you survive on the Kepuh's Islands, confronting challenges that are not only other players but also bosses, and even the environment itself.
We have a lowpoly faster battle-royale idea, where about 12 players on the map fighting for survival! Also adding some more things into that style such as bosses around the map giving you abilities and much more such as vehicles, weapons, skins, etc...
Now we are on cartase which is a crowdfunding online which purpose is to raise funds for the development of the game. Come and be part of this development.