Jump to content

Canardia

Developers
  • Posts

    4,127
  • Joined

  • Last visited

Blog Entries posted by Canardia

  1. Canardia
    I have developed my own forum software for Domino for some time, because I was always shocked with the basic lacks of functionality of conventional forum softwares like phpBB, vnboards, Invision Power Boards, SMF, etc.... For them it seems normal that all messages are lost when the forum software is updated, and they just eat it with a bitter taste in their mouth. They also take happily backups every day, but most of the backups fail because of some misconfigured ftp accounts.
    For someone who has worked with Domino that is absolutely not acceptable, since in Domino the database design and data is completely isolated from eachother, so no data is lost ever. And a backup is a backup in Domino, it's a file, and not some SQL mess which only simulates the actual data.
    So far I have used my Domino forum template in 3 different forums:
    http://www.toiveet.fi
    http://www.fortran2008.com/forum
    http://www.wishforum.com
    And with this latest one, I have started to make it like a SharePoint template, so you can easily just make a new site and it works, everything is parametrized in a simple Parameters view.
    IBM is also developing something similar, but I doubt they can make it as fast as I can
    When it's completely ready, I will also upload a public free version to OpenNTF, since that's the nexus for standard Domino templates, and supported by IBM too.
    All people who have seen the forums have thought it's not a real forum. I think it's because they are used to lots of spam and unneeded features, and they can't imagine that you can make things also elegant, kinda like google.com or an Apple device.
    So far the forum template has the following features:
    1) Posting as Anonymous user (can be disabled if wanted)
    2) Posting as Anonymous user, but impersonating someone else (can be also disabled)
    3) Logging in without registering (the forum registers you automatically and instantly (a secret Domino feature )
    4) Uploading files to any post or into your forum profile document (also short links work).
    5) Streaming OGG files directly (needs a little Domino httpd.conf hack)
    6) Dynamically scaling to any screen resolution
    7) List of latest modified topics (not a spam list of each post)
    8) List of deleted posts
    9) Undelete button
    10) CSS 3.0 oriented visual layout
    11) Single file database design (allows easy backups and offline working)
    12) Fully parametrizable via a simple Parameters view
    13) Support for root URL and sub URL forum home locations (for example: / or /forum)
    14) Library area for structured sticky posts, including sublibraries
    15) News area
    16) Embedding of any HTML and JavaScript code (can be disabled)
    17) CKEditor integration (can be disabled)
    18) Fully modifiable design and code and using CSS and LotusScript
    19) Free and paid support (including custom modification wishes)
     
    Source
  2. Canardia
    I just had a 3 day course about Advanced C++ programming.
    It was pretty cool, and I enjoyed every second of it.
     
    I already knew most of the C++ language itself, but I've never taken any course about the different ways of programming, and which way suits best each solution. This was exactly what I wanted to learn, and I feel much more professional now
     
    The course talked about the following things, and we had to write also real C++ code for most of the ways we just learned and compile and run it. It was organized pretty smart, as many topics built upon a previous topic, and the code we wrote earlier. That was fun also:
     
    Design Patterns:

    different models and their usage
    GoF-models (GoF=Gang of Four: http://en.wikipedia.org/wiki/Design_Patterns )

    Creational Patterns:

    Abstract Factory
    Builder
    Factory Method
    Prototype
    Singleton

    Structural Patterns:

    Adapter
    Bridge
    Composite
    Decorator
    Facade
    Flyweight
    Proxy

    Behavioral Patterns:

    Chain of Responsibility
    Command
    Interpreter
    Iterator
    Mediator
    Memento
    Observer
    State
    Strategy
    Template Method
    Visitor

    Antipatterns:

    usual problems in class design
    solutions to problems

    Each of those topics exposed a different way of programming in C++, and it was pretty amazing what kind of features are hidden in C++, of which most people probably never thought of before.
     
    I had no idea how powerful and easy C++ really is, when you use it the real C++ way. Basically it was like, you should use classes for everything, and never do big if() constructs and other hardcoded and procedural logic.
     
    Doing things right in C++ gives also a huge speed boost in execution and programming time, and makes code really reusable, as they explained why each const, virtual, static, volatile, mutable, stack, heap, algorithm, etc... is useful.
  3. Canardia
    Humankind never had a chance.
    They came from the skies,
    like they did before,
    but this time they were not our gods
    - they were our fate,
    or so it seemed.
    We called them the Anushar, since that was the only thing we knew about them: the name of their leader.
    A few of us survived, perhaps because we were weak,
    and didn't appear to be a threat to them.
    This is where my story begins...


    Just testing the storyline for the new model I'm getting soon
    I'm so excited about it and hope that it will be what I always dreamed of!
     
    Now when I think about it, isn't it like a toy, which you get with a collector's edition of a game, but having it as a in-game 3D model is much more fun since you can put it in all your games and demos.
     
    Of course there will be a game also where it plays the main role, but first I need to finish another game, and another one still after that.
     
    Oh, this song tells a story about the great war against the Anushar too. What she calls "You" is what we know as God today, he is one of them:


    But there's more to it, why he did what he did, so see you in the game!
  4. Canardia
    I'm testing Code::Blocks with LE2, instead of Visual Studio 2008/2010.
    So far it seems quite nice, and very intuitive to learn and configure.
    I already found some benefits of Code::Blocks over Visual Studio:
     
    1) LE2 syntax highlighting can be configured to be different from the built-in C++ keywords. In VS they always have the same color.
    2) Compiling time is much faster, because it can use MinGW.
    3) Generated code is much faster, because it can use -O3 and -O6 optimizations.
    4) Loading the IDE is much faster.
    5) Compiling can be configured to stop at the first error, while in Visual Studio it always tries to compile the whole source code first which takes ages and is useless if there was a first error.
    6) Code::Blocks works also on Mac and Linux, so you can have the same IDE under any OS.
    7) Using MinGW in Code::Blocks gets rid of the VS RunTime needs, which needs the user to install MSVCRT90.dll, or you to include them in an Microsoft.VC90.CRT folder with your game.
    8) Intellisense is super fast and smart. It shows only keywords which match what you typed so far, and it works with LE2 commands too.
    9) Code::Blocks work also with Wine in Linux, while Visual Studio does not, so you can use Linux to write and play your LE2 games. Wine runs also LE2 games 20 FPS faster than Windows XP (and of course much faster than Vista/7, since XP is much faster than those).
    10) Showing/hiding the console window of LE2 can be easily turned on/off in Code::Blocks with the -mwindows linker option, while in Visual Studio you need either some preprocessor pragmas or some complicated System target settings.
    11) Code::Blocks cleans up whitespaces after lines automatically, while in Visual Studio you have to do this manually.
     
    I will make a tutorial how to setup a LE2 project with Code::Blocks next.
  5. Canardia
    MinGW 3.4.5 C++ vs. Visual Studio 2008 C++ vs. GNU C++ make quite different quality in speed of executable code.Currently MinGW is 1.902 times slower than VC++, and VC++ is 1.315 times slower than GNU:MinGW default:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=41.594000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=16.937000s.Total time=58.531000s.VC default:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=41.609000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=15.469000s.Total time=57.078000s.VC -O3:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=41.593000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=15.453000s.Total time=57.046000s.MinGW -O3 -mtune=i686:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=37.437000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=15.766000s.Total time=53.203000s.VC IDE default:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=15.078000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=12.953000s.Total time=28.031000s.VC IDE -O3:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=15.078000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=12.890000s.Total time=27.968000s.openSUSE 11.2 GNU -O3 -mtune=i686:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410065408, n=100000.000009, time=16.060000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=5.310000s.Total time=21.370000s.Debian 5.0 GNU -O3 -mtune=i686:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410065408, n=100000.000009, time=16.650000s.Creating and deleting 1 billion class objects...Done. i=100000000, time=4.620000s.Total time=21.270000s.
     
    Source
  6. Canardia
    I invented a new programming language called Easy.It's faster than C++ (theoretically), since it inlines everything.I see no point programming in C++ without Easy anymore, since the same and better results can be achieved using this new language.It saves also a lot of time and costs when programming, and it should work also with other languages than C++, if they support variadic macros.Here's the Easy home page:
    http://www.siipi.com/easyEasy is still in version 0.0.3.0 0.0.7.0, but it will grow fast, as every new program I make will be written in Easy.
     
    Source
  7. Canardia
    I introduced my new language earlier in Roland's Wizard thread, so I thought I could explain it a bit more.
    Of course a new language is always seen a bit sceptically by people, and they wonder why is it needed, or what benefits does it bring.
     
    At its first version, Easy is still very simple, and based on Variadic Macros (macros which can take a dynamic amount of parameters), and I hope I can keep it that way, and not need a seperate preprocessor, since it would break some features, like direct compiling in Visual Studio and other compilers, and in other languages too.
     
    Although Easy is not always less to code than C++, BASIC or Pascal, it should be still faster to code with, as you don't have to type characters like "{", "}", "=", "<", ">", ":" and ";", but you always use only "(" and ")". So it's less thinking while coding (or looking up help files and examples), and it should get quite intuitive after writing your first few programs.
     
    Let's compare C++, BlitzMax and Easy code:
     
    C++:

    #include "stdio.h" int main() { printf( "Hello World!\n" ); for( int i=1; i<=10; i++ ) { printf( "%d\n", i ); } return 0; }
     
    BlitzMax:

    SuperStrict Print "Hello World!" For Local i:Int = 1 To 10 Print i Next
     
    Easy:

    #include "easy.h" Begin Print( "Hello World!" LineFeed ) For( Int, i, 1, 10 ) PrintIntLine( i ) End Return( 0 ) End
     
    As you can see, Easy has the least amount of special characters used, and everything is kept simple using a few characters: "(", "," and ")". It's also more readable (round brackets are reader friendly also in mathematics, as they do the thinking for you, when combining multiplication, division, powerization and addition in formulas), especially for persons who don't know the language in question (C++ or BlitzMax).
     
    The line feed handling is still something I'm thinking about, it could end up as: PrintIntLine( i ), or PrintInt( i, LineFeed )
     
    The official Easy web page can be found here:
    http://www.siipi.com/easy
  8. Canardia
    Josh talked about the new engine integrated Framework:
    http://leadwerks.com/werkspace/index.php?/blog/1/entry-57-merry-christmas/
     
    The engine integrated framework is the only way at the moment to have LUA and C++ code use the same framework instance.
    This brings some great benefits over the old way how framework works:
    1) You can have LUA scripts which access framework commands, and they work also in your C++ program. Earlier the LUA scripts could not access the framework commands of your C++ code, and you couldn't create a 2nd framework instance from LUA either, since it would have caused a big mess.
    2) You can port framework to other languages much easier now, as you only need to port the C headers.
    3) When framework is modified, you barely need to do anything to update your "other than BlitzMax or C/C++ code". In most cases the modifications and updates are only internal, so the interface doesn't change. In this case you don't need to do anything. In the case that the interface changes, you only need to update the changed interface commands.
     
    Although the C/C++ framework source code will still remain, it is not needed at the moment (it will be needed later on when LE is ported to C++ (officially (for console ports), or inofficially (by source owners)). I think that now it will mostly serve as documentation how framework works internally.
     
    At the same time framework will get a more object oriented environment also, since LEO needs to access it too.
    Optimally, game developers would use LEO and Lua, as their syntax is almost identical (and can be made even more identical when Josh makes every Lua command OOP style). I say optimally, because with the combination of LEO and Lua you get the fastest possible code for a game with the biggest 3rd party library support (from LEO), and also the easiest, most interchangable and fastest to code code (from Lua).
     
    GameLib 0.0.16.0 will also use the engine integrated framework, so it will bring another boost to C/C++(LEO) game development (and to BlitzMax and to other languages if the community would be more supportive in porting GameLib ). Although if the C++ game development accelerates even more in future, soon anyone not using C++ would be a fool and waste his time, and that's not a bad alternative either. I personally think that the world would be much more advanced if people would stop making new languages all the time (there are over 350), and focus on C++ only.
  9. Canardia
    People are wondering what language they choose with Leadwerks3D. Sometimes they have some exotic languages in mind, but quite often it comes down to the decision between Lua and C++.
     
    Recently I read an article that LuaJIT (yes, you can use it in Leadwerks3D too) is actually damn fast. It's fast, because the simpliness of the language allows for extreme optimizations. It might even come close to C++ speed, or in some cases even exceed it. That's how fast LuaJIT 2.0 is. But it's still in beta, so it can only get faster.
     
    Same goes for Fortran 2008 btw, it usually beats the speed of C++, because the compiler knows which CPU registers are in use and can assign them intelligently, which C++ can't, since it doesn't know which registers are in use. But it doesn't have such nicely optimized STL libraries for linked lists and stuff, so it ends up slower in those cases, because nobody can single handed make such great optimizations as STL provides.
     
    Lua has some advantages and also disadvantages over C++.
     
    The advantages are:
    1) You can use the same code on all platforms, which makes finishing your game much faster
    2) You can develop in real time, because you only need to compile for the final release of the game, if even then, but usually you will need it if your game does some more complex calculations, and to make sure your game runs also well on slower machines
    3) You can learn it much faster than C++, it's really just basic, and often even easier than that because there are no types and other annoying stuff
    4) You can share code with other people much easier, because like beforementioned, nothing is type specific, which allows for extreme abstraction and generic code
     
    The disadvantages are:
    1) You don't have such great arsenal of 3rd party libraries ready for Lua, although with some effort you can find some libraries which someone has made, or you can take any C/C++ library and wrap it yourself for Lua
    2) If you really need maximum speed for some time critical routines, you still need C. Yes, not even C++ is fast enough for those. And then you need to wrap them again for Lua
     
    For reference, here is an article that LuaJIT can actually even come on par with C in some benchmarks:
    http://lua-users.org...6/msg00071.html
     
    On the other hand, I think with the growing interest for Lua in Leadwerks3D, the Werkspace asset store will provide more and more ready made libraries for Lua over time.
     
    My conclusion is, that LuaJIT 2.0 is a very easy and fast alternative to C++ with Leadwerks3D, and it allows also sharing of code and code snippets much easier than C++ does. Which is what the Leadwerks Community is about.
  10. Canardia
    You served us well for many years, beating all competition, and it shows in your old age and scars of development. To bring back the freshness and speed of the old days, with a modern and powerfully multitalented browser, we say:Welcome SeaMonkey 2.0!Why?Here are some reasons why SeaMonkey is better than Firefox:1) Uses only 56MB on google.com, while Firefox uses 82MB2) Faster than Firefox 3.5.5. Firefox 2.0 was always faster, and SeaMonkey is based on that.3) Firefox 3 introduced frequent crashing, especially when you close and reopen it quickly, but also randomly when you open it.4) Firefox 3 hangs up quite often, taking all CPU load, even on simple web pages with only one instance running.5) SeaMonkey has also e-mail, graphical HTML editor, and IRC built-in. Still it uses less memory than Firefox.6) Firefox takes sometimes 10-20 seconds to open certain Ajax based chats on forums.7) SeaMonkey runs on Windows, Mac, Linux (just like Firefox).8) It has less security holes, and is less attacked (since most attackers focus on IE and Firefox).9) Firefox takes over 30 seconds on first time to open when I start my PC. SeaMonkey takes 7 seconds.10) It has collapsible toolbars, like Netscape had. It has collapsible and resizable sidebars, just like Notes 8 has!11) It has profile switching! This is very useful for web developers, as they don't need to use different browsers for each user, or close all browser windows to switch a user.12) It has theme switching.13) It has a site navigation bar.14) It scores 93/100 on Acid3 test (same as Firefox 3.5.5, but IE8 gets only 20/100, and IE9 gets 32/100): http://acid3.acidtests.org15) It has no home button (yes, that's a benefit, read on...). I was at first confused and thought, that cannot be, it's a useful button! But then I thought about it more, what is it actually? It's just a clickable item in the browser. So I figured, I can just as well put my new home button as first link in my bookmarks sidebar (F9, not Ctrl-B like in Firefox). Then I have all clickable sites in the same place, and don't need to move far distances with the mouse to the home button. Play it in your mind, how you navigate to the links and to a home button near the navigation buttons. It suddenly feels very unpleasant to have to use links in different locations. It feels like I have to switch to a different thinking routine, and that's stressing.16) It has probably a lot more benefits over Firefox, but I just started using it an hour ago :)17) Pressing Ctrl-U gives you a adhoc-realtime source display of a web page. You can update the source by refreshing the window. You can't do that with any other browser.It's not so far fetched for (ex-)Firefox lovers, as Mozilla features them side by side, although you might notice that they say that the all-in-one Mozilla suite is no more, so what to choose? (the choices are alphabetically sorted, to avoid any bias):http://www.mozilla.org/projects/browsers.html
     
    Source
  11. Canardia
    Just fresh out from the press: IBM will drop the Lotus part from the name, because it misleads many people who remember Lotus 1-2-3, Lotus Smartsuite, and yes even Lotus Notes which is often thought as ancient and dead.
    This is very cool, because it removes the long name nonsense and makes it clear that it's a real IBM product, and everyone knows that IBM is the leader in computer technology, mostly on the hardware side, but since the aquisition of Lotus also on the software side, and of course since the invention of Fortran.
    Also a SharePoint killer app will be included out-of-the-box with IBM Notes/Domino at some point. I don't have any details on this, but I would assume it would integrate IBM Quickr plugins in it, without needing a seperate IBM Quickr server.
    As I mentioned earlier on Vowe's blog, I converted from C/C++ to IBM Fortran. I never liked Microsoft C#.NET, because it's slow and bloated (and I just can't understand why someone would use Garbage Collection, since for me it means only that the programmer has no skills and discipline and should not program in first place), and IBM Fortran beats even C/C++ in speed and of course it beats both C#.NET and C/C++ in easyness to write code, thus increasing productivity a lot.
    IBM Fortran for IBM Notes/Domino is indeed a double RAD solution: radical performance combined with radically easy development. Usually they work reciprocally, but not with this approach.
    I have a plan to make Fortran 2008 a sexy and modern language, and it involves several steps:
    1) Establish web site for Fortran 2008: http://www.fortran2008.com [DONE]
    2) Establish IBM Domino based custom forum for Fortran 2008: http://www.fortran2008.com/forum [DONE]
    3) Make a OpenGL and FreeGLUT demo for Fortran 2008, because it seems that nobody has done it before: http://www.fortran2008.com/posts/3D46BEECFB7212EDC22578C200420D3E [DONE]
    4) Implement the most advanced realtime 3D engine for Fortran 2008 [Coming in 2011-07-30]
    5) Implement IBM Fortran API for IBM Notes/Domino [Coming in 2011-09-30]
    6) Continue implementing and supporting several other essential high quality libraries for Fortran, like sqlite3, sdl_net, etc... and make easy to follow tutorials so that even beginners can understand them.
     
    Source
  12. Canardia

    Game Development
    I started using Ultra Engine on 2023-01-18. Learning to use the engine has been really easy.
    The documentation is very clear and I can search for keywords I want to learn about. Each command has a fully working example, so I can quickly copy-paste and try the code.
    The installer is also amazingly fast and automatic, and updating to the latest engine is just a click away. Updating my projects to use the latest version is also fully automatic by clicking on the yellow sign.
    The support from the Ultra team is very professional and fast, usually I got a solution and/or bug fix or new feature within minutes.
    Creating a new game project is just one click away, and when I organize my projects by moving them to other subfolders, importing them back is also a click away.
    Now I'm writing an actual game, and while doing so, I'm building classes to implement the game logic. I already made a model in Blender, and it worked directly in my game, using the glTF save option in Blender. Also the physics for the model worked directly.
    This weekend I'm unboxing my Ryzen 9 + Radeon RX6800 laptop, and setting everything up for art, music and game production.
    My tools are:
    - GIMP, for textures
    - Blender, for models
    - WavePad, for editing .flac audio files
    - Reaper, for composing music and saving as .flac
    - Ultra Engine, for making the game using the above assets
    The game will use physics for triggering game logic, for example: if a certain collision occurs, a new set of physics objects will be spawned.
    Some models will have animated color gradients, to simulate dream-like experiences, but who can tell if dreams are real when scientists say it is very probable that the universe is a simulation, made by Ultra Engine ;D
    Today I thought about binaural 3D sounds, they will occur when different physics materials collide. I will also implement sound occlusion, so that when a sound is played behind a wall, it will sound dampened. I even thought of sound reflection, so it would bounce off walls, possibly using an invisible gravityless physics ball or raytracing, but I can probably use reverb/echo effects instead.
    Finally, the scene will be streamed from a database, perhaps using SQLite3, and I found a nice trick how to remove far-away models using a C++ list.
    One thing I really like about the engine too, is that it takes only 4 seconds to compile changes in the game using Visual Studio 2022 Community Edition, and I can even speed that up using game logic libraries and loading parameters from a file.

     
     
     
  13. Canardia
    I've recently started to use Layers for web apps, and Outlines for Notes apps. And they give a better development speed.However, Layers have also some problems:1) They don't scale with the web browser window like tables do2) When replying with history to an Notes e-mail, layers get all screwed up, so you can only use tables in Notes, but for web apps Layers are still quite goodOutlines for Notes apps totally rock though:1) They expand vertically when you expand their entries (like with subviews). Navigators can't do that2) You can add a nice company logo and lots of other stuff, which you can't do with basic Notes Views3) You can also add lots of other links than just Views to an Outline4) You can sort the Outline entries how you want, and don't need to add some "1. ", "2. " numbering to the view names, and you can also decide which Views you want to show at allSo far I've been under the impression that only Agents, Views, Forms and Documents should be used in Notes for Notes and Web apps, but these 2 elements seem to qualify for further use too (Outlines need of course also Framesets and Pages, but that's OK as they serve a good purpose). Some Notes performance extremists like Chris Toohey go even as far as saying that you need only Documents and Agents (for web apps only), but I see still some benefits with Views and Forms.I guess I'm just a man in the middle, between the Notes 8.5.1 enthusiasts, and the Notes-Fastest enthusiasts. Actually I'm more of a Notes-Stablest enthusiast, so on Windows servers I use Domino 7.0.4 only. On Linux, Domino 8.0.1 seems damn stable (never crashed yet class). On AIX, well Domino is more stable than the OS, so better install Debian on your IBM PowerPC servers.
     
    Source
  14. Canardia
    Today I wanted to start a GameLib tutorial series, and wanted to eliminate all temporary code and build the tutorial from beginning so that it will only expand and build on the previous tutorial steps.
     
    Loading models and creating meshes programmatically is out of question, as you don't do that in real games. You would at least somehow have them loaded from a config file.
     
    Then I thought I should put all assets into a Leadwerks Editor scene, but that won't work with real games either, as you can't save gamestates with sbx files. Well, you could have a small seperate gamesave file, but then you would need to load the sbx file each time and remove things which are not there anymore in a later gamestate.
     
    Then I thought that having the assets in a sqlite database would work, as then I can just save changes into the database, and it would load much faster than a sbx file anyway, since it would load only assets in camera range. Of course the game should leave the original sqlite database unchanged, and rather use a copy of it. A combination of static scene dbs and dynamic scene dbs, and also partial scene dbs would work.
     
    There's only a little problem using sqlite databases with LE: There is no visual 3D Editor for Leadwerks which can use sqlite databases! With sqlite3 there comes a handy table editor, but that's not enough for making game scenes.
     
    As I'm working on a dynamic MMO also, and I wanted first to make the GameLib tutorial series to see that everything works, it seems I need to make a Leadwerks Editor SQL first. If my game uses sqlite scenes, the Editor would be needed also by team members who are working on the game content.
     
    The first version of Editor SQL can be quite simple. You can place models in front of the camera, and then you can move/scale/rotate them with the cursor keys, including grid alignment. Scaling should be possible, if I study the phy file format a bit, and change the phy file according to the mesh's scale.
  15. Canardia
    For almost a year Max3D lead the charts, but the single fact that LE has now realtime scripting, brought it 1 more point, totalling in 14 points and beating all other engines on the market:
    http://siipi.com/public/mika.nsf/0/2AAC3EECC888AC57C22575F7004ADC16
     
    Some people might need a low-end engine, but this very same chart provides that information also:
    You just look which engine has low-end support and is ranked highest.
    The same way you can find the best engine for your needs, if you have similar special needs as low-end support.
     
    Anyway, congratulations Josh, for getting number 1 with your engine
    And I think this was just the beginning of a new era, called Social Game Development.
    I can foresee that LE gets even more points in future, broadening up the gap to other engines.
  16. Canardia
    I had some funny idea again, and started to make Leadwerks Navigator.
     
    It's a simple web page which allows the user to choose different paths and areas of information about Leadwerks Engine.
    The deeper he navigates and into the more advanced topics he goes, the higher level he gets.
     
    I have no idea how useful this is, or if the Leadwerks web site will be easier to navigate,
    but at least it's fun to do! :
     
    http://www.siipi.com/leadwerks
  17. Canardia
    I'm dreaming of Leadwerks3D, and while waiting for its release in June, I have already many ideas what I want to do with it. Then I realized, it's actually much more than just a 3D game engine, because it allows to have a OpenGL context on all devices, including Android, iPhone, iPad, PC, Mac, Linux, and more in future. In addition, it allows you to code in C++ on all those devices, which means that also high level languages, like my SuperBasic will work on all platforms, because it uses a C++ compiler in the backend, and of course the SuperBasic precompiler which is written in C++ too.
     
    This would make it possible to have a programming IDE and game editor even on mobile phones.
     
    Now that again means, that we should actually do all development of GUIs, applications, including business applications and tools with Leadwerks3D itself, and not use some external libraries like Qt, GTK+, GLUT, SDL, etc..., because then it would not work all platforms again, at least not directly.
     
    We only need that Leadwerks3D has all the minimum required libraries built-in, which are needed for game development, since game development is much more demanding that other applications. So there should be SQLite3 and libCURL by default in Leadwerks3D too, so that we can have a fast database system and easy HTTP/FTP access with the native engine commands. With a simple HTTP command set I could make WebService calls and other HTTP stuff on every device, which is the most important feature of modern applications. Everyone is connected that way, and can integrate with any system.
  18. Canardia
    I decided to try out Qt, and was shocked how easy it was to "install" and use.
    I only unpacked the mingw-Qt zip to my h:/lib/qt folder and it was "installed".
    Then I only added the QtCore4.a and QtGui4.a to my codeblocks project's linker settings, and added the h:/lib/qt/include and h:/lib/qt/include/qtgui folder to my project's source files tab, and then I put the QtCore4.dll and QtGui4.dll in the same folder where my game.exe was.
     
    A simple demo program like this already makes a fully functional text editor:

    #include <QtGui> int main(int argc, char* argv[]) { QApplication app(argc, argv); QTextEdit edit; edit.show(); edit.append("Hello World!\n"); return app.exec(); }

    It compiles in less than a second with codeblocks too B)
    Now I will learn a bit more how to use Qt, and then make a demo with LE2 using Qt.
    I think this will be the ultimate killer GUI, because it's so easy to use and extremely lightweight and fast (it only links what you use).
    And it looks like it uses by default the OS style too, what Josh likes.
  19. Canardia
    Modding games is a popular sport, and very productive, since you don't have to code usually much, maybe some little additions only.
    However, modding has its limits, as you are usually bound to a quite hardcoded game genre environment, unless you use Garry's Mod or something, but that has then it's own limits too with the engine features.
     
    Since I am currenly building a GameLib FPS template for LEBuilder, these thoughts came up. What the template will do, is to create a simple FPS game with one mouseclick. After that, you can compile it, and it just works. You can open the level1.sbx or level2.sbx in Editor, and it just works. However, since the time critical game logic is done in C++, you can't play the game in Editor, but you can edit it in 3D WYSIWYG very well. I think that is good enough. LE3 Editor will be done that way anyway also.
     
    From a modder's perspective, you basically create a vanilla game, and then you "mod" it with Editor. You don't necessarily have to code anything in C++, but you can, if you want. Nothing is hardcoded in GameLib, you can choose which commands to use and when, and you can even choose to write your own commands which you use as standard GameLib command replacements. The C++ part of coding gives an unlimited possibility to "mod" the game to your imagination, and time critical routines will never be a handicap, because it's C++. With Lua or other slower languages you might encounter problems with time critical routines.
     
    If you don't want to learn C++, you can also ask me for new GameLib features in the Werkspace Forums, which I will then implement as Editor Thingoids or Models. So basically most feature requests from artists and modders are about adding new GameLib Thingoids to Editor, and I have then to check myself, if the vanilla FPS template C++ code needs also some additions. But you don't have to care about that, it's my job, and I love to do it.
  20. Canardia
    I have many projects going on, some have been going on for years, some were finished in very short time. When I got all pieces together, then projects are finished in very short time, and when some essential piece is missing, it will keep the project open until... well, until the piece is found.
     
    I was inspired to write this blog, because today I saw many pieces come together. Not just one for one project, but multiple for multiple projects. Actually this wave started already yesterday, and today even more things came together.
     
    Some of the big projects are:
     


     
    Lucid: a 3D system, not exactly an OS, although it replaces many OS features. It has for example a insane fast file system, which is done on another core, so it doesn't affect the main program at all. And that file system is a database, what Microsoft planned for Windows since years, but never managed to do it. Lucid was on hold for many years, since OpenGL didn't work on all computers. Now it does, even on Intel GMA. The missing piece was to find the right 3D rendering engine, now it's clear that it's Ogre3D/BlendELF, and it might be just one after testing which one wins the low-end limbo.
     
    Mimic AI: a research into reverse AI (the name Mimic AI comes from the fact that it actually behaves more like real humans (it blatantly mimics them), rather than using some intertwined logic), which I found very funny, since it was quite accurate and indistinquishable. Now I found a real application for it: the Human language, which will essentially transform spoken english into C++, Lua, BlitzMax and whatever it "knows". The knowledge database is a simple text file, but it could be a SQLite3 database also, but that's not needed yet until the size of the database grows too big to be in-memory only. The missing piece was to find a real use for Mimic AI, and also a language which can be used for any game, tutorial, documentation, etc... So that there is no need to have multiple languages.
     
    Blitz3D 2.0: I wanted to have a low-end capable 3D engine, preferrably cross-platform. Ogre3D with Bullet and/or BlendELF seems to fulfill this job best. Yesterday I realized it will also fit the job as core rendering engine for Lucid. The decision for Bullet was not a simple one, and I did a lot of research into ODE, PhysX, Havok also, and Bullet came out as the winner. The missing piece here was to find a low-end engine which can also do shadows and physics.
     
    A real game in LE: I found a nice team, and LE 2.32R5 is finally a
    completely bug free engine (not sure about the programmatic terrain editing yet, but I will find it out tomorrow). I also found today finally - after having searched for 3 years - an artist to make the LCP alien model. I told him a price range of 50-200€ and he snapped immediately a deal. The missing piece was to find a team which was dedicated to finish a real game, and the secondary objective to find an artist to make the alien model.

    So now I have the missing pieces for 4 of my big projects. Now it's time to code
  21. Canardia
    I added multithreading capability to the Siipi speedtest tool, and it showed surprising results: Looping got almost number of cores times faster, but allocating memory got almost number of cores times slower!Here's the test with the first part using 4 cores, and 2nd part using 1 core (as before):Speedtest 1.1 © 2009 SiipiCounting 10 billion floating points using 4 cores...thread 1 begin=25000.000000thread 2 begin=50000.000000Main loop begin=0.000000thread 3 begin=75000.000000thread 3 loop ended at 100000.000003.thread 2 loop ended at 75000.000003.thread 1 loop ended at 50000.000007.Main loop Done. i=2500000050, n=25000.000009, time=4.390000s.Creating and deleting 100 million class objects using 1 cores...Main loop Done. i=100000000, time=13.313000s.Total time=17.703000s.Now the same test with both parts using 4 cores:Speedtest 1.1 © 2009 SiipiCounting 10 billion floating points using 4 cores...thread 1 begin=25000.000000thread 2 begin=50000.000000Main loop begin=0.000000thread 3 begin=75000.000000thread 3 loop ended at 100000.000003.thread 1 loop ended at 50000.000007.thread 2 loop ended at 75000.000003.Main loop Done. i=2500000050, n=25000.000009, time=6.312000s.Creating and deleting 100 million class objects using 4 cores...thread 1 begin=25000000thread 2 begin=50000000thread 3 begin=75000000Main loop Done. i=25000000, time=66.188000s.Total time=72.500000s.As reference the original test, using no multithreading:Speedtest 1.0 © 2008 SiipiCounting 10 billion floating points...Done. i=1410063201, n=100000.000003, time=15.078000s.Creating and deleting 100 million class objects...Done. i=100000000, time=12.890000s.Total time=27.968000s.I found also an interesting article where the author claims that multithreading does not speed things up (which is not always true), but rather stops the system from getting blocked (which is always true, as I've experience with the Lucid engine also):http://www.anomaly.org/wade/blog/2005/08/unintuitive_multithreading_spe.html
     
    Source
  22. Canardia
    Today I tried to make a simple web page using the Domino Designer 8.5.2FP1 XPage design element on a Domino 8.5.2FP1 Linux server. Getting to know how it works is pretty easy, and I didn't need to read any documentation.
    I made a Form with a Subject and Body field, and a View which shows the Subject, then I made an XPage which uses the Form as its Data Source.
    Then I found some good and bad sides about XPages:
    The Good
    The Bad
    1) It's quite easy to learn how to use XPages, as the UI makes sense. It's pretty close to Visual Studio also.
    2) The design element toolbar is nice, and you can drag and drop any design element to your XPage.
    3) You can easily connect fields from Notes Views and Notes Forms with visual design elements.
    4) A RichText type field activates CKEditor automatically, and it saves it as Notes RichText so it can be visually seen in the Notes Client also. Getting rid of the IBM Oracle Java RichText applet was a very good decision of IBM. Now they just have to get rid of the rest of IBM Oracle Java in Notes/Designer/Domino and things would be faster and better than ever. CKEditor rocks hard!
    5) XPages have many useful premade actions which you can use in Buttons, for example Create Document, Edit Document, Toggle Read/Edit mode, Create Response Document, Delete Document.
    6) The design elements have a nicely structured Data/Style/All properties tree view, from which you can visually change many CSS tags, JavaScript events, Notes functions, etc....
    This makes visual working effective and fun, even when it's only visual coding, as the visual output is a different issue.
    7) You can integrate standard JavaScript libraries visually into XPages, like Dojo, JSon, REST, etc....
    1) The visual layout in Designer does not match the visual layout in SeaMonkey or Notes very much. I get a much closer match with SeaMonkey's Ctrl-E visual editor, from which I can copy/paste individual design elements into a Notes Form for further processing. I thought that maybe the main reason is the difference in the default settings of SeaMonkey/Notes/Designer, and by adding a CSS stylesheet, the visual output would match closer in all clients. A stylesheet didn't help either, and Designer still shows the HTML page completely different than the browser. I found a workaround though: adding computed fields with HTML code on the XPage around all XPage design elements solves the problem, and I get a decent browser output.
    2) The HTML/CSS source code is calling some XSP JavaScript class, and it's impossible to edit or analyze the page with SeaMonkey afterwards, since there are no div tags or any other HTML tags. This is not very compatible with anything, and makes development harder. It seems there are divs after all, but they don't support the position:absolute style.
    3) The fact that CKEditor saves RichText as Notes RichText has its bad sides too. You can't correct errors in the HTML code when the transformation goes wrong. Also the Source button in CKEditor is missing, as well as the Layer (=div) button. Maybe there is a hack to make it save as HTML? Fixed: It actually saves as MIME/HTML so the HTML source code of the rich text field is intact, this is great!
    4) When I made a very simple XPage with only a Subject and Body field, Domino Designer managed to mess up its own XSP code and caused 2 errors which broke the XSP compiler, and the XPage could no longer be compiled/updated. I removed manually some duplicate action/save tag in the XSP code and it worked again.
    5) When Domino is configured to run on port 81, and even when I have the firewall opened for port 80 and 81 from my Workstation and Server, the XSP RichText CKEditor breaks when port 81 is used, and only a small textarea is shown. This is however not a real issue, as I need to add some redirection code anyway to redirect Domino back to port 80. I just hope XPages allows such redirection, like the $$Return field in Forms does, or the Print statement in WQS LotusScript agents. I wonder why Domino even tries to force the user to port 81, when the web page was opened from port 80 or no port was specified (which defaults to 80). Domino should not care what is written in its server document, but only look at the incoming URL.
    6) The XPage opens fine in SeaMonkey, when I choose Design/Preview in Web Browser, and it worked first in Notes too, but after I added the Body field, it stopped working in Notes completely, and I only get an error: Item not found. Workaround found: Opening the XPage manually from the server works fine in Notes.
    I would be glad to hear what I did wrong, and how I can get those bad things fixed.
     
    Source
  23. Canardia
    Things change
    and other things using those things must be updated from time to time to keep them working properly.
     
    Leadwerks Engine C/C++ was originally designed to work only with VS 2008, but keeping GNU C++ in mind, then a few updates were made to make it work with MinGW 3.4.5. Now MinGW 4.5.2.1 has been updated to support the newest C++ standard, and so a few updates need to be done in the Leadwerks Engine C/C++ headers too. But don't worry, those updates are fully backwards compatibe, so it will still work in MinGW 3.4.5.
     
    I've fixed today a few warnings with MinGW 4.5.2.1, and a few more are still remaining, which I will fix today also. VS 2008/2010 and Dev C++ work of course too, as these are only official C++ standard related fixes.
     
    When the official headers are updated, I will proceed with adding klepto2's new commands into a seperate community edition of the C/C++ headers, while he is maintaining the C# community edition headers.
     
    And even after that, GameLib needs to be updated too, to give no warnings with MinGW 4.5.2.1. But these will be natural updates as I fix them while I'm writing a few small example games with gamelib.
     
    I've setup release dates for these things also:


     
    2011-07-22 Official C/C++ headers update
    2011-07-23 Guess A Number game: Adding gameplay features
    2011-07-25 Community Edition C/C++ headers
    2011-07-30 Fortran headers

    Now I'm taking ideas what kind of other mini games you want to see made with gamelib. I've already planned a Tower Defense 3D game, but that is not so mini
     
    EDIT:
    Status update on 2011-07-25:


     
    engine.cpp and engine.h are ready and sent to Josh
    LEO was missing Body::SetForce and Body::SetTorque completely, so I added them
    all gamelib warnings with MinGW 4.5.2.1 have been fixed
    Guess A Number game is almost ready for beta testing
    Seems like the votes go for a mini RTS game next
     

×
×
  • Create New...