Welcome to the GlPortal issue tracker. New to the project? Try our simple tasks.

  • Status New
  • Percent Complete
  • Task Type Bug Report
  • Category Backend / Core
  • Assigned To No-one
  • Operating System All
  • Severity Low
  • Priority Medium
  • Reported Version Development
  • Due in Version backlog
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: GlPortal
Opened by Henry Hirsch - 17.03.2016
Last edited by Henry Hirsch - 18.03.2016

FS#127 - Comments on Radix

07:03 < nfries88> Also in Game::update, I believe "while (SDL_GetTicks() > nextUpdate && skipped < MAX_SKIP) {" is intended to be 
                  "while (SDL_GetTicks() < nextUpdate && skipped < MAX_SKIP) {"

08:10 < nfries88> also, he should not be comparing strings when he could be comparing identifiers or simply storing systems in an 
                  ordered list: bool PlayerSystem::runsBefore(const System &sys) {   const char *name = sys.getName();   return 
                  ::strcmp(name, "PhysicsSystem") == 0; }
08:12 < nfries88> even an optimized strcmp will take at least stringlength/sizeof(int) times as long as an integer comparison

06:58 < nfries88> ok I have to go to bed soon, but I have on last suggestion regarding radix engine, it will make it more flexible (so, 
                  for example, the ECS aspect could be used for servers). Maybe you can pass this on to Dorian?
07:00 <@uwjesq> nfries88: Yes I can.
07:02 < nfries88> reduce the control that the World class has over Systems, or possibly eliminate it entirely and just have the 
                  programmer using Radix invoke each system on command, and synchronize each system on command
07:03 < nfries88> presumably the Radix user will be implementing most or all systems himself anyway, so he can control how systems run 
                  when implementing the systems
07:04 < nfries88> this would allow, in the server case, for most systems to be implemented to run asynchronously on a worker thread 
                  that's just an asynchronous task pool
07:07 < nfries88> it also might be more proper to remove the dependency on bullet from the engine, and instead put the system 
                  implementation in the GlPortal branch. This will make the engine useful to people who have physics requirements that 
                  bullet does not meet.

07:14 < nfries88> For offline games or clients, this is probably fine, but it is making Radix::World into a black box systems 
                  controller (black boxes aren't great), and it assumes all systems should be run synchronously in worker threads (this 
                  does not work for servers)

07:18 < nfries88> it will make Radix slightly harder to use when system control is up to the user, but this gives more control to the 
                  user to maximize performance with their specific requirements.
07:19 < nfries88> I am always happy to offer advice
07:24 < nfries88> Radix could also implement a worker thread pool class for this general case.
07:24 < nfries88> (it's basically what is already done in Radix::World anyway)
07:32 < nfries88> you might also want to open a task for adding an asynchronous file I/O implementation. I'm honestly amazed at how few 
                  game engines include such a useful (and now almost universally available) feature


07:43 < nfries88> on Linux it is pretty easy with POSIX aio. I think there are several ways to do it on OS X, but POSIX aio is also 
                  available there
07:43 <@uwjesq> nfries88: On windows not so much...
07:44 < nfries88> On Windows there is either ReadFileEx/WriteFileEx or I/O Completion Ports. I/O Completion ports is better.
07:44 <@uwjesq> nfries88: To windows users we show a screen "Loading very slowly... because windows."
07:44 < nfries88> lol
07:44 < nfries88> actually if Windows were more secure, and didn't have all that UI bloat by default even on their server versions, I 
                  would only use Windows for game servers
07:45 <@uwjesq> nfries88: I know this one guy that is using windows servers. I only have ??? in my eyes when he talks about them.
07:46 < nfries88> I/O Completion Ports is much easier than the alternatives for network IO (and POSIX aio does not work for network I/O 
                  - each family of Unix-likes have their own mechanism)


Date User Effort (H:M)


Available keyboard shortcuts

Task List

Task Details

Add/Edit Task

TODO:complete the list
for accesskey usage different shortcuts on Windows, Mac, Linux .., currently shown for Firefox