Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 13 Jun 2001
Online Last Active Today, 05:32 PM

#5187037 How to Separate the Rendering Code from the Game Code

Posted by Madhed on 14 October 2014 - 04:29 PM

The main selling point of ECS is code reuse and separation of concerns. By breaking up your typical classes into small self-contained components you can easily build more complex behaviours by combining them.

Cache coherency is a nice side effect that *can* occur if you design your systems right.


As for the mostly empty list, you could simply sort your objects so that unused ones get appended to the end of the list. Then you can trivially stop iterating once you hit the first unused element.

#5186053 safely researching PC games

Posted by Madhed on 09 October 2014 - 02:07 PM


#5184541 passing data between objects using messages... wat do?

Posted by Madhed on 02 October 2014 - 05:17 AM

It sounds like you are trying to implement a completely dynamic system without any explicit dependencies. While this is possible it completely circumvents c++'s type system with respect to classes.

Also it is arguably far worse to have dependencies implicitly encoded within your code rather than explicitly enforced at compile time.


Reality is, there will always be dependencies. No object is an island.

There exist different design patterns to deal with these dependencies. The mediator pattern is the first than comes to mind.


As for circular dependencies, if you write your headers the right way (inclusion guards, forward declarations) and design your game right you won't have problems here.


Sounds to me like a case of premature optimization.

#5184439 passing data between objects using messages... wat do?

Posted by Madhed on 01 October 2014 - 05:31 PM

Why not simply store a reference to the Time object in the Mario object when you create it?

Mario is apparently dependent on Time so I see no reason why this should be done with messages.

#5184163 This chat, apparently, is a gigantic coding horror

Posted by Madhed on 30 September 2014 - 04:31 PM

It's especially funny since javascript already has a built in function called encodeURIComponent which replaces certain characters with their respective safe counterparts.

#5183482 Hand painted textures **UPDATED**

Posted by Madhed on 28 September 2014 - 08:47 AM

Looks way better. I think you don't even need a normal map for this art style as the diffuse texture already has a lot of lighting in it and the look is very cartoony,

#5180136 Code organization without the limitations of files

Posted by Madhed on 13 September 2014 - 06:06 PM

I think this is one of those cases where an implementation detail forces you to use a tool in a specific way. ie. code stored in a hierarchical filesystem forces you to structure your program in such way.

The problem with hierarchies is that they are strict and rigid and force you to put your code in a dichotomy that is very ill suited for a multi dimensional problem like computer programs.


What you want is to abstract away the file system from the programmer and treat it as an optimization problem for the IDE to feed into the compiler.

Ultimately the source code would be stored in database that is closely modeled after the language specification, as a normalized, canonical representation of the program.


All the features that you wrote about would then be views on top of that database. That way you can choose a representation that fits the task you are currently trying to solve.


Big problem I see with this, like others have said, is the tight coupling to the IDE.


But it could be interesting nevertheless, I actually thought about this exact thing before.

#5178669 How difficult(or not) do you find these C++ tests?

Posted by Madhed on 07 September 2014 - 06:26 AM

I really don't like these kind of tests. Yes, they are called "c++ tests", but what is really tested here is specialized knowledge of a few very specific langauge concepts probably containing more than one gotcha. Almost like a trick question, and I don't like trick questions.


What I'd be more interested in a candidate is quickly grasping large-scale code structure, ability to visualize class dependencies, debugging, refactoring, all in all skills that are not bound to a specific language.

#5176088 Moving from dinput to RAW input (mouse)

Posted by Madhed on 25 August 2014 - 04:30 PM

Handling windows messages is not that hard though. And you are guaranteed to not miss anything.

#5176082 Moving from dinput to RAW input (mouse)

Posted by Madhed on 25 August 2014 - 04:03 PM

I personally never bother with Windows messages and use the API functions directly. Look up GetCursorPos() for mouse movement and GetAsyncKeyState() for keypresses. These will give you immediate values which you can process at your own will.


GetAsyncKeyState() can miss key presses when the framerate is low or the key was pressed very quickly.

#5176076 Moving from dinput to RAW input (mouse)

Posted by Madhed on 25 August 2014 - 03:54 PM

Can someone explain what exactly happens there and what the cons are of doing it with a while loop?
(will this cause delay when there are no messages, since if waits?)


No cons really. That's the way it's supposed to be handled:

You should process all pending messages before you run the game logic. Otherwise you will see the lagging that you described because the message queue will fill up with stale input data.

#5174571 How do you make these "long" web sites?

Posted by Madhed on 18 August 2014 - 04:41 PM

The things that seem to be "en vogue" right now(?) are Parallax backgrounds and responsive design. ie. One layout that adapts to every possible screen width in a more or less nice way.

#5171601 First project (pong) code review

Posted by Madhed on 05 August 2014 - 05:06 AM

I noticed one thing while looking through your header files:


There are no includes and/or forward declarations in there. Apparently they work only because you include all needed stuff in the main.cpp before including your own header files.


While this works now, you will have to do the same if you want to use them in another project. IMO these headers should be self contained and not rely on the structure of the source file in which they are included.

#5171458 Game coming out that is similar to mine: How to deal?

Posted by Madhed on 04 August 2014 - 12:45 PM

Lie down.

Try not to cry.

Cry a lot.

#5171175 Dune II Track Cover

Posted by Madhed on 02 August 2014 - 03:03 PM

The individual elements of the song sond good. But you need to work on the overall composition.

The beat is dragging along all over the place (slowing down/speeding up again).


Do you record the beat with an actual drum kit? If automatic quantization doesn't help here you will have to get your hands dirty and fix the timing problems manually.

Also I feel that the guitar is a bit out of tune.


If you fix these issues this could sound pretty cool. I especially liked the electronic sounds at around 0:50.

It felt like they would lead into a more straight forward pounding industrial beat, but didn't...