Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.

Don't forget to read Tuesday's email newsletter for your chance to win a free copy of Construct 2!


Member Since 12 Apr 2006
Offline Last Active Nov 22 2014 10:34 AM

#5114375 Suggestion for a cross-platform C++ 3D game engine/framework

Posted by adam4813 on 04 December 2013 - 01:38 PM

I would put forth my own framework, Sigma, that is still very WIP (the read me is very out-of-date). It has most bullet points you went (graphics is still shaping up, so no animations, particles, etc yet) and the sound is to be added (this weekend).

  • It is pure C++ and takes advantage of some C++11.
  • It works on Linux and Win32 (Mac testing is in the works).
  • It uses GLFW for the OS abstraction layer (user input via mouse/keyboard works but it can also do controllers).
  • OpenGL 3+ using a custom rendering engine.
  • Bullet Physics.
  • and of course HTML based UI using chrome (CEF in the works, but currently has Awesomium.
It is being used for the Trillek engine (and is what is powering the milestone 1 release). You can contribute if you would like as well since we are a small sparse team of developers that are open to work from others. And let's not forgot the link Sigma.

#5079243 99 Bottles Of Beer Challenge With Least Amount Of Characters ?

Posted by adam4813 on 20 July 2013 - 09:57 PM

The brackets are need around the ternary operator since it's in a macro.

#include <iostream>
#define a(i) << " bottle" << (i-1?"s":"") << " of beer" << 
#define w " on the wall" <<

int main()
    for(int i=100;i-->1;)
      std::cout << i a(i) w ", " << i a(i) ".\nTake one down and pass it around, " << i-1 a(i-1) w ".\n\n";
    std::cout << "No more" a() w ", no more" a() ".\nGo to the store and buy some more, 99" a() w ".";

After some tweaking 273 now

#4942296 NLS Engine

Posted by adam4813 on 22 May 2012 - 12:58 PM

Check out the Google+ page for our engine (NLS Engine) here +NLS Engine. We are using Angelscript as our internal scripting engine. Ricky (another team member) has created a nice Unit test framework for use inside Angelscript which you can check out here NLS Google Code repo

Our goal with the engine is to create a modular component-based scripted engine. The modules handle various systems such as graphics, sound, physics, etc and these modules provide the various components that our game entities are made of. The glue that allows attaching components of varying types to a game entity is Angelscript. Additionally we plan to take the engine cross-platform which Angelscript is perfect for.

#4942083 Enum collision across namespaces

Posted by adam4813 on 21 May 2012 - 10:18 PM

Additionally found that object types suffer this issue. Both lines 1426 snf 1433 in as_scriptengine.cpp are lacking checks for namespace
if( objectTypes[n] && objectTypes[n]->name == typeName ) // 1426
if( templateTypes[n] && templateTypes[n]->name == typeName ) // 1433

After patching them to read:
if( objectTypes[n] && objectTypes[n]->name == typeName && objectTypes[n]->nameSpace == defaultNamespace ) // 1426
if( templateTypes[n] && templateTypes[n]->name == typeName && templateTypes[n]->nameSpace == defaultNamespace ) // 1433
The parse continues on and errors out at my previous reply.

#4942080 Enum collision across namespaces

Posted by adam4813 on 21 May 2012 - 10:06 PM

The offending block of code from as_builder.cpp line 3943

asCObjectType *asCBuilder::GetObjectType(const char *type, const asCString &ns)
// TODO: namespace: Registered types should also allow namespaces
asCObjectType *ot = engine->GetObjectType(type);
if( !ot && module )
  ot = module->GetObjectType(type, ns);
return ot;

It checks for the type by name only in engine. This check causes it to return the type registered under the first namespace rather than checking with the namespace as well.

#4933636 EntityID String<->Int resolution

Posted by adam4813 on 21 April 2012 - 05:16 PM

The design we are using for NLS engine is such that each Entity has a vector of ComponentInterface*. Each module (graphics, physics etc) can extended that base type for its own components. Then the component is also stored in a vector for that module. The module itself contains the update method. The only reason entity even known about its components is for easier debugging and entity destruction to insure all components owned by that entity go bye-bye with it.

The important point is that it's perfectly fine for both entity and module to have a reference to component. However the distinction is that entity OWNS the component, and modules UPDATE using the components.

For reference you can catch NLS engine at https://bitbucket.org/adam4813/nls-engine . We are currently reworking for our v1. Within the next few days the biggest chunk of that rework will be live and you can see the interaction between components, modules, and entities.

#4933586 WinApi controls cleared together with screen in DirectX

Posted by adam4813 on 21 April 2012 - 02:04 PM

For the D3D render area make another control of type STATIC. Then you use the HWND of that static control for the D3D creation. Then the scrollbar is parented to the main window, and the static is also parented to the main window, but D3D won't clear the main window, just the static control.

#4900524 what is the name of this win32 control?

Posted by adam4813 on 07 January 2012 - 09:40 PM

Its actually just the ListView control in detail mode. You need to specify the columns, but getting the sorting button might need to be done with custom drawing. However when you do sort it you just change the order of the items, and you can still let Windows draw the contents.

#4786763 ETA for a from scratch 3d GFX engine?

Posted by adam4813 on 16 March 2011 - 03:47 PM

Not to sound harsh, but this is a loaded question with to many variables. There are many types of engines and many different components that could or might not be included. You would mostly be looking at a few weeks for a simple GRAPHICS engine that could have ships flying through space firing bullets, etc but there would be only basic collision detection with that.

#4785815 Win32 Common Controls !

Posted by adam4813 on 14 March 2011 - 05:22 PM

In Visual Studio (may work with others) you can explicitly tell the manifest tool to add the common-controls v line using;

#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")