Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Game Engine Editor

Vilem Otte



So, I'm slowly progressing with my hobby project. This is the first time I write something about the project directly tied to it, or more likely essential part of it. I'll share few details here about the editor development.


Making useful game/engine editor that is easy to control is definitely a long-run task. While the engine itself is updated to support Direct3D 12 currently, there was no real editor that could be at least a bit generic. For my current goal with this project, I decided to start with editor and work from there. So where am I at?
I'm already satisfied with some of the basic tasks - selection system, transformations, editing scenegraph tree (re-assigning object elsewhere - through drag&drop, etc.), undo-redo system (yet with adding more features this needs to grow), I'm definitely not satisfied with way I handle rotations edited through input fields. Component editing is currently work-in-progress (you can see prototype on the screenshot), and definitely needs add/delete buttons. It is not properly connected with undo-redo system yet, but it works. So what are problems with components?
  • They're not finished, few basic were thrown together for basic scenes, but I'm not satisfied with them (F.e. lighting & shadowing system is going to get overhauled while I do this work)
  • Undo/redo tends to be tricky on them, as each action needs to be reversible (F.e. changing light type means deletion of current Light-deriving class instance and creation of new different Light-deriving class instance)
  • Selecting textures/meshes/..., basically anything from library, requires a library (which has no UI as of now!)
Clearly the component system has advantages and disadvantages. The short term plan is:
  1. Update lighting & shadowing system
  2. Add library (that it makes sense!) with textures, meshes and other data - make those drag&drop into components
  3. Add a way to copy/paste selection
  4. Add a way to add/remove components on entities
  5. Add save/load for the scene in editor format
Alright, end of my short pause - time to continue!


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By methinks
      I'm trying to write a simple server application using Winsock2. I have a socket listening on port 80 (for http traffic). When I run the program and use my browser to connect to, the server receives the connection and displays it as expected.
      New Connection Recieved message: GET / HTTP/1.1 Host: Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 DNT: 1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 The problem comes when I try to close the socket. I'm using the following two commands: 
      closesocket(currentSocket); FD_CLR(currentSocket, &socketList); When I do this, the program keeps repeating the output as if it was getting the same request over and over. If I remove either of these commands it only displays the output once, as it should.
      The complete source code is as follows. This is a simplified version of the code that will duplicate the behavior, so I've omitted certain checks for clarity.
      #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif // !WIN32_LEAN_AND_MEAN #pragma comment(lib, "ws2_32.lib") #include <WinSock2.h> #include <iostream> void runTest() { ////// SETUP /////// const int LISTENING_PORT = 80; const int BUFFER_SIZE = 4098; WSADATA wsa; sockaddr_in listeningAddress; listeningAddress.sin_family = AF_INET; listeningAddress.sin_port = htons(LISTENING_PORT); listeningAddress.sin_addr.S_un.S_addr = INADDR_ANY; WSAStartup(MAKEWORD(2, 2), &wsa); SOCKET listeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); bind(listeningSocket, (sockaddr*)&listeningAddress, sizeof(listeningAddress)); listen(listeningSocket, SOMAXCONN); fd_set socketList; FD_ZERO(&socketList); FD_SET(listeningSocket, &socketList); ////// MAIN LOOP /////////// bool isRunning = true; while(isRunning) // endless loop, normally has interupt mechanism { fd_set socketListCopy = socketList; int socketCount = select(0, &socketListCopy, nullptr, nullptr, nullptr); for (int i = 0; i < socketCount; i++) { SOCKET currentSocket = socketListCopy.fd_array[i]; if (currentSocket == listeningSocket) { std::cout << "New Connection\n"; SOCKET client = accept(listeningSocket, nullptr, nullptr); FD_SET(client, &socketList); } else { char buffer[BUFFER_SIZE]; memset(buffer, 0, BUFFER_SIZE); int bytesIn = recv(currentSocket, buffer, BUFFER_SIZE, 0); std::cout << "\nRecieved message:\n" << buffer << '\n'; // Using the following two lines causes the output to loop closesocket(currentSocket); FD_CLR(currentSocket, &socketList); } } } WSACleanup(); }  
    • By Sleeping Daemon
      So I am currently on the Game Design aspect of an ambitious MMOFPS project. I need to know if having either full body awareness or floating arms be best to achieve better performance? or if it doesn't matter. I see some FPS's feature full body awareness but I would like to know why most of them don't have them? 
    • By Quat
      In d3d12 the docs seem to push you to allocate large buffers that can store multiple resources (suballocation), whereas in d3d11 you might do one allocation per texture/mesh.  Is there a performance benefit to this?  It seems with the fast resource binding model of d3d12 you could do an allocation per texture/mesh and still have good performance over d3d11.  Why does the GPU care if the memory is from one large buffer or scattered?
    • By Quat
      I'm reading about memory management in d3d12.  The docs basically say that a "committed resource" it like how past versions of Direct3D allocated a resource where you get virtual address and physical address.  I understand reserved resources to do things that tiled resources in d3d11 were used for, but when would you use placed resources over committed resources?
    • By hmcdev
      I want to learn to code games in C++ but I have no idea where to start, can someone teach me?

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!