Jump to content

Canardia

Developers
  • Posts

    4,127
  • Joined

  • Last visited

Everything posted by Canardia

  1. I was looking at some old programming languages like COBOL (a business oriented language, and the second oldest language: founded in 1959), Ada, Fortran, Prolog, and few others. My interest was only to see how programming worked in the old days, and if they had any good ideas which I could reuse for the upcoming symbolic visual language. When I stumbled upon Fortran, I remembered that some people had said that it's faster than C++, and I remember the funny fact that Intel has the fastest C++ compiler, but still they sell it side by side with their Fortran compiler. That kinda made me curious to see, if the reason why Intel still supports Fortran, is indeed because it's faster than C++, and I was positively surprised when I made some speed tests and in each test MinGW G95 (now also MinGW Fortran, aka gfortran) beat MinGW C++ in performance. So far I've been using MinGW C++ because it makes faster code than Visual Studio 2008 and 2010 C++ (and compiles also much faster, like the same program takes 2 seconds to compile with MinGW C++ and 30 seconds with VS 2010), and I haven't got a business case to invest for Intel C++ which might be even faster than MinGW C++. And the loop to IBM closes as I found that Fortran was actually invented by John Backus of IBM in San Jose, California in 1950: http://en.wikipedia.org/wiki/Fortran My study on Fortran involved learning the language in a few days, and I came up with this chart: Source
  2. I got LE2 to work now with Fortran G95 (independant MinGW Fortran version) and Fortran 2008 (the official MinGW Fortran), and have already some minimum working code: program main use leadwerks integer result,fw,camera,cube,sun result = Initialize(0) result = Graphics(800,600,0,60,10) ! I still need to add default parameters fw = CreateFramework() sun = CreateDirectionalLight(0) cube = CreateCube(0) call MoveEntity(cube,Vec3(0.0,0.0,5.0),1) do call UpdateFramework() call TurnEntity(cube,Vec3(0.1,0.1,0.1),1) call RenderFramework() if (KeyHit(KEY_ESCAPE)==1) exit call Flip(0) enddo result = Terminate(0) end Compared to early Fortran versions like G77, the code in G95 looks quite human readable. In G77 you had to write everything in CAPS G95 is not case sensitive, so you can type how you want. The example uses a leadwerks.mod file, which is called using the "use leadwerks" command, and it contains the header imports for LE2. Fortran G95 is actually very similar to BlitzMax, because of the following features: 1) both are case-insensitive 2) both can use unstrict or superstrict mode (G95: implicit none, BlitzMax: superstrict) 3) both use leadwerks.mod files, with the difference that in G95 it is one binary file, and in BlitzMax it's a folder with 2 files 4) both can compile also C and C++ code directly 5) both have very simple BASIC like syntax 6) both can have multiple commands per line, seperated by ; 7) both can use line feeds as command seperators, and don't need a ; after each command 8) both can continue commands over several lines (G95: &, BlitzMax: _) 9) both are designed to be a game development language (and scientific and business language), and not a language for computer nerds only The big differences between G95 and BlitzMax are: 1) G95 is insane fast, even around 4.3% faster than C++, while BlitzMax is around 250% slower than C++ 2) G95 is free and open source, and works on all platforms, while BlitzMax works only on Windows, Mac, Linux The G95 installation is very simple: You just download the g95-MinGW.exe setup (it's only 5MB), install it, and it's ready to use. It can be installed in the same directory as an existing MinGW, but I would rather install it in a seperate directory, for example c:\g95. The setup file can be found here (choose the "Self extracting Windows x86", if you use Windows): http://www.g95.org/downloads.shtml#CS To compile a leadwerks game with G95 you type the following: g95 engine.o leadwerks.o game.f I'll upload engine.o and leadwerks.o to the member downloads, when I have polished it a bit more. Actually I could also do a complete Leadwerks Engine Developer pack, which is a single zip file with all you need to compile, kinda like Blitz3D, but without the SDK files of course. G95 works also with Code::Blocks, which I will try next, and make some simple tutorial how to set it up. I made also a comparison between G95 and C++: http://siipi.com/public/mika.nsf/blogs/1BB23690E5CDF0CFC22578B50073A786
  3. I think I will make Fortran G77 headers for LE2 now, at least a minimal header to play around and learn new things I heard that Fortran is faster than C++, so I must test it a bit. The MinGW suite includes C, C++, Fortran, Ada, Java, Objective-C, and at least the MinGW C++ compiler is one of the fastest I've seen. EDIT: OMG! I made a test program, and fortran was 3.6% faster than C++ with the same compiler options. I think I found finally a better language than C++! EDIT2: 4.3% faster with G95. I will write a post when I get some first G95 LE2 demo working.
  4. You can program Leadwerks with any language, but you need the headers first. Here is a list of programming languages which you can theoretically use with Leadwerks, as long it supports loading dlls: http://en.wikipedia.org/wiki/List_of_programming_languages Actually I just fell in love with COBOL when I looked at the hello world examples of those languages. It's the first language ever invented, in 1959 In COBOL you can just say: ADD YEARS TO AGE while in most other languages you have to say it in less human readable format like: age = age + years or age += years So a Leadwerks example in COBOL could look like this: CALL 'CREATECUBE' USING BY REFERENCE WS-FLD-E END CALL. CALL 'TURNENTITY' USING BY CONTENT WS-FLD-E, WS-FLD-V1X, WS-FLD-V1Y, WS-FLD-V1Z END CALL.
  5. You must select ZIP format in WinRAR. If you open your Content.pak with WinRAR and press in the Info button it says that your pak file is a RAR archive, and LE2 can only read ZIP archives. You can select ZIP + Best packing, no need to use store. And then abstract::cobblestones.mat works.
  6. I've seen other mature engines which do exactly the same, they use a single format to load, and leave all other formats for import only. That is the only right way to do it, since putting multiple load formats into the engine would only bloat the engine size and memory footprint, and only one format can be technically the fastest. There is no such thing as multiple formats would load as fast, as there is always a difference.
  7. Thanks, you can also beta test my game then
  8. Good to know, since some other people had also problems with terrains and the newest ATI drivers, so this will help them too. Thanks for trying the last good drivers out
  9. Yes, but that's a good thing, isn't it? (Even that sentence proves it) It's just the opposite, he wanted to know what he can import, that is the 2nd step in the pipeline.The first step is to export it from your modelling software, or buy it ready. What LE2 then finally loads and how and from where, is the last step of the pipeline. Anyway this discussion is totally silly and trivial. I don't have time to correct your mistakes in terms the whole day, I have a game to finish
  10. The OP was only asking what LE2 IMPORTS, he doesn't care in what format LE2 then finally loads them, as every engine has its own propretiary format
  11. You both got your terms wrong. LE2 doesn't IMPORT gmf, but it LOADS it. LE2 IMPORTS all those formats I listed via the official supported tools which come with the SDK. Of course with 3rd party tools like UU3D and Blender your import format arsenal expands to hundreds of formats.
  12. The Leadwerks main page has only this picture, but you can probably guess what it means (I recognize only the dae and blender icon ): Out of my mind, I can remember that it has tools to import the following file formats: mesh: fbx, dae, x, 3ds, b3d, obj+mtl, 3dw texture: png, bmp, jpg, tga, tiff, gif sound: ogg, wav
  13. I think if you buy it now, you will probably get the new version cheaper than buying only the new version. I mean you pay less for 3DWS 5.6 + 3DWS 6 together than if you wait and buy 3DWS 6 only. But this is completely unofficial information, but I could imagine it will be so, because that's how it works with Leadwerks Engine 2 to Leadwerks Engine 3 upgrade too. Besides, there is nothing wrong with the current version either, I use it quite often to make complex dungeons and also buildings, because it's damn fast and easy to make models with 3DWS.
  14. It really depends how you use it. Terrains have a limited size, but I don't use terrains, but only 3D meshes. The scene graph has a limited size, but it can be avoided by moving all objects closer to the origin when the player is too far away from the origin. Using these techniques you can build infinite streaming worlds. Loading of new models which have not been loaded yet, will cause a small delay of a few frames, but you don't have that many different models in a large world anyway, and you can even preload the models if you have enough memory.
  15. It's completely free of any logos, splash screens, ads, royalty fees and annual fees.
  16. I think the official answer is something like "it depends how much stuff LE 3 will have". But you get LE3 cheaper if you buy LE2 now, because LE2+upgrade_to_LE3 is cheaper than LE3 alone. I would bet that the upgrade_to_LE3 costs some 2-3 digit number, but not 4 or more.
  17. Framework is checking and deleting and recreating lots of stuff if they have changed since the last call to RenderFramework(), so this is probably why using a smaller buffer will cause also problems, since Framework doesn't fully handle the buffer change. I am using always the raw RenderWorld() command for extra buffers like mirrors, realtime cubemaps, rifle scopes, water and radar maps, since then Framework is not disturbed with constant buffer changes. It's more work to have all effects using RenderWorld(), but like Josh said, you don't even want all effects in those small extra buffers.
  18. Today I was explaining what the problem with all programming languages today is, that they have all failed, because they are not intented to make results (except Prolog maybe), but rather to aid the programmer to tell the computer what to do. This is a fundamental mistake, since computers should serve humans, including programmers. So the base for a better programming language is to focus on what the programmer wants as result, and let the computer optimize and decide what method is best to implement it. This brought me to the next step, that a programming language must indeed only be a medium to listen what the programmer wants, and the programmer doesn't need to know how to do it, as long the computer works within the limits given by the programmer. My initial idea was to have a "English Programming Language", but then I discussed this idea with a friend who was a fan of graphical programming using flowcharts. It was obvious that a spoken text based and graphical based approach are both good at some things, but neither is better than the other in all situations. I realized that both are actually parts of some bigger picture, and I realized also that spoken english (like all spoken languages) is only a failure of communication skills, since using a symbol language all people would understand eachother, including the computers. Then I started to draw the bigger picture and came up with this: Source
  19. It's very simple really, you just check if handbrake is on, and then apply the opposite Z force what GetBodyVelocity gives.
  20. You need to make a handbrake system for the car, which is controlled by some flag like "handbrakeactive=true". Without that, cars will always roll around terrain slopes freely. It works like a real car.
  21. Yeah, like Josh just said - which was news to me too - there will be a seperate 3DWS 6, which obviously uses the same codebase as Leadwerks Engine 3 Editor. That's a cool idea, since it will be probably cheaper than Leadwerks Engine 3.
  22. Leadwerks Engine 3's Editor will be the next 3DWS, amongst other things. This will give more features to 3DWS users, as well as Leadwerks Engine users.
  23. I would divide the house into breakable components. LE2 has a limit of 65536 vertices per model anyway, so you can't make any complex models with a single mesh: http://www.leadwerks.com/werkspace/index.php?app=tracker&showissue=172&view=findpost&p=809 And when the player gets heavy weapons, he should be able to destroy all houses.
  24. SetHDR(1); It's documented in the Wiki under the Framework class.
×
×
  • Create New...