Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 07 Nov 2002
Offline Last Active Yesterday, 10:29 PM

#5249958 Should fanfic games be legal?

Posted by alnite on 31 August 2015 - 12:01 PM

Need I remind you that companies are using the exact same "reasoning" to shut down (negative) reviews, caricarture, persiflage and what not... even though we have fair use to technically protect that.


Do you have examples of this case?  I would be surprised if caricatures are allowed to be taken down by the court, as that should falls under fair use.  Perhaps the author of the caricature decides to take it down anyway rather than take it to court which could be expensive for both parties.


Copyright owners can contact you about it, write a cease and desist letter or whatever they think can scare you off.  Nothing restricts them from doing this.  What you decide between you two is up to you.  If you can't come up with an agreement, then you have the court which shall decide what happens.  But if you decide to take it down before taking it to court, then case is settled.  However, it's not that it's illegal to draw caricatures, it's just you prefer to take it down rather than going to through the costly legal battle in court, which benefit nobody except the lawyers.


No, it's never been legal to create any derivative works unless there's an agreement for it, which I shall advice the OP to do if he's truly passionate about it.  You can always publish your work without permissions, nothing is stopping you from doing that.  Just don't be surprised if you receive a C&D or taken to court.

#5249954 Should fanfic games be legal?

Posted by alnite on 31 August 2015 - 11:51 AM

I am not a lawyer here, so here's my penny.


Is it legal to copy someone else's works, up to the point of similar/identical characters and their names and plot lines?  This is copyright infringement, and it's a clear boundary that it is NOT legal.


Now there's also the fair use law, which is what you can probably use in court, but the way I see it, it is for making references to existing games, kind of like writing a book about game design and using Legend of Zelda as a reference point.  You are not making a whole new game based off it, but you merely use it as a reference.


So, it's not legal and probably not going to be legal anytime soon.


However, legal process only takes place if the rightful owner of the copyright decides to take legal action against you.  The judges, random lawyers, the Supreme Court are not going to be actively scanning the interweb for copyright infringement.  The copyright owners have to be made known of these other derivative works, and they have to file a claim against you.  If they do, be prepared to lose, because all odds are stacked against you.


If the owner does not file a claim against you, then nothing is being argued, and everybody moves along.  Nothing happens.


So, what can we do about this?  You can call or email the copyright owners for a permission to write a derivative game.  You cite all the stuff you said, not for profit, open source, etc, etc, or perhaps you can make a business deal and write an agreement that you have been authorized to make a derivative work.  As a matter of fact, this is happening all the time.  This is how game studios are able to make licensed games, where the owner of the license is typically another entity.  Once the legal owner has granted an approval, within the context that you are both happy with, then you may proceed with the development.

#5248322 Why should I ever program a game again?

Posted by alnite on 22 August 2015 - 10:42 PM

There are points in the development of almost every industry, game industry included, where you will notice some shift in the technology used.  This signifies maturity of the industry.


I'll pick civil engineering, just as an example that has nothing to do with games.  Do you think civil engineers are out there calculating Newtonian physics everyday?  No.  Most of the solutions are already done.  Want to build stairs?  Guess what, you just pull out a template for stairs, with the measurement already done for you.  If you go to Home Depot, if you are in the USA, or some local hardware stores, you will notice hardware materials are already cut the certain sizes.  These sizes are not random.  They satisfy local building code, and also make things easier and faster to build things, because it's been calculated dozens of times.  Why repeat the work?


Let's go back to game industry.  30 years ago, game developers have to tinker with video memory just to put sprites on the screen.  They came up with clever hacks and tricks to push more pixels and colors.  Then there is an advent of graphics API such as DirectDraw, OpenGL, Direct3D, that take care of this for you since the video memory technology had matured enough that you can create a solid API on top of it.  So people then program their games using the graphics API.  No longer hacking in the video memory.


So right now, we are just seeing another maturity progression in industry.  The folks over at Unreal have been honing their engine building tools for years, and people at Unity are also catching up to speed.  You now don't have to code the graphics/sound API anymore, you can skip through all that and just focus on your game.


This does not mean that you can't code at the lower level anymore.  Just like there are some people in architecture who continue to tinker with different building shapes, you too can still code in Direct3D/VRAM so you can get those voxel or whatever graphic theories fancy you.  Software engineering will not die anytime soo, but expect things to move higher in the stack.



If lower level programming interests you more, holographic projection is a thing now.

Now imagine coding a holographic game.

#5246562 Questions before I start solo on a basic 3D RTS...

Posted by alnite on 14 August 2015 - 02:36 PM

At this point in time, it's rather pointless for you to go through any "3D tutorials" that talk about 3d collisions, physics, terrain generation, water surface, etc.  You are interested in building a 3D game, not a 3D engine.  These mechanics are only useful to those who want to make their own engine.


Definitely use the free game engines Unity or Unreal Engine.  They have been made free only recently, and these are powerful tools that allow you to build 3D games.  Enabling 3D collisions may be as simple as a checkbox.  These guys have done it for you, professionally done, and they have made their sweat and labor available for free.  Take advantage of it.


Look up Unity/UE4 tutorials.  Little by little you'll get there.

#5244352 High Speed Collision Detection

Posted by alnite on 03 August 2015 - 01:22 PM

During the collision detection phase I would do a line intersection test with the hitbox of my other collidable objects.


If other objects are also moving, you need to raycast all of them.

#5243470 C++ Loading config files, with extend/inheritance and full error handling

Posted by alnite on 29 July 2015 - 07:37 PM

If I understand you correctly, you need a schema for your config file, another file that defines a list of all the expected fields and their types, and if necessary the structure.  XML has its official schema definition file, while for JSON you may need to create one your own.  Your config loader will read the schema first, and store the expected fields and types in a separate map.


When you load your config files, then comes the error handling.  I would recommend raising the errors as early as possible, rather than populating it with default values that may not even work.  Before it even reaches the `loadVehicleType`, KeyValues should only contain valid values, structures, and types.  If you want to enforce some min-max range, I would put that check in the object's constructor, as it pertains to application logic.


So your step looks like this:

1. Load schema

2. Load config files

3. Check config files against the schema (field's existence, type checking, and structure)

4. Pass values to object constructors

5. Object validates for acceptable values.



Alternatively, you can also put range validation in the schema (step 3), if the schema supports it.  Although, I wouldn't do that personally.  For example, if I have a field "gravity = -2.8" in my config file, I would just accept that as is.  Shit are going to be all over the place, but I am not going to dictate whether that is a good or bad thing.  The solution to that problem is simply "well, don't put -2.8 for gravity".

#5243230 What skills is more important for a Junior programmer to master

Posted by alnite on 28 July 2015 - 12:50 PM

Should I learn Unity or Unreal to the point that I can create a Pong Game and a Retro Game and then learn one of them more in depth? Or, should I learn Unity to the point where I can create any type of game such as a Shooting Game, and a Multiplayer Game and after I have mastered these, then learn the Unreal engine?


Either one of these would work.  The employer will assume that you do everything wrong in your games.  The reason why is that the employer has its own development process and methodologies that there is no way a junior programmer would immediately fit in or understand their process.  Even if you have created a FPS, you won't create the same FPS in the company.


It's a good resume to show that you created multiple simple games.  If you create one complex game, it's also a good thing.  It shows that you have passion and that's a good thing to have.  Don't sweat over what games to show off.  Pong, pacman, tetris, failed attempts at MMORPG work just as effective.

#5242789 Who wants to see a C replacement?

Posted by alnite on 26 July 2015 - 11:52 AM

The Golang is kind of like what you are asking for.

If you use it, it feels a lot like C. IMO, these are the improvements that Golang has over C:

  1. No header files, but you still need to include.  This is obvious for obvious reasons.
  2. Pointers are simplified, but they are still there.
  3. GC.
  4. Simplified threading, thanks to go routines and channels.
  5. Simplified distribution, since all your code is compiled into one big binary.  So you don't need lib this and that to run Go programs.

I'm sure there are a few more.


Some people are super ecstatic about it.  I think this is partly a fad.  It's still a good language.

If what you are making have anything related to multithreading, Golang should be one of your options.

#5242537 Finding a string in a file given x tags

Posted by alnite on 24 July 2015 - 08:23 PM

The function GetWord() takes the tags as an argument and returns the word.

Shouldn't GetWord() return multiple words?  What if there are multiple words with the same tags?


Hello: Tags: Greeting, Polite

Hi: Tags: Greeting




The 'best' way to implement this varies depending on the scope of this problem.  There's already several solutions out there that can perform a map/reduce query, and that is perfect for situations like this.  However, you do make this sound like a homework/exercise problem, in which using a 3rd party library/database probably wouldn't make sense, or beyond of what was being asked.

#5235979 Do you comment Above or Below your code?

Posted by alnite on 21 June 2015 - 12:21 AM

Obviously above.


But, one can also perhaps write comments using the footnote system.  Using Hodgman's example:

// [1]
void FooBar()
  string fourtyTwo = "2A";// [2]

// [1] Beware: for legacy reasons, this function uses numbers that are encoded in strings as hexadecimal
// [2] 42 = 0x2a


#5234402 4 unsigned chars to float?

Posted by alnite on 12 June 2015 - 12:46 AM

I don't quite understand the original question, but if you just need the float in 4-unsigned-chars format, why not use union?

#include <stdio.h>

int main() {
  union {
    float v;
    unsigned char c[4];

  v = -9000.50f;
  printf("Float value: %f\n", v);
  printf("Byte values: ");
  for (int i = 0; i < 4; ++i) {
    printf("%02x ", c[i]);


Float value: -9000.500000
Byte values: 00 a2 0c c6 

Although, big/little endian will bite you hard in the ass. Make sure you know the endianess of your system, and anything else it sends this data to.

#5233215 What should I do now that I implemented a game mechanic that is not popular a...

Posted by alnite on 06 June 2015 - 02:18 PM

Yeah the bottom line is are you making this for yourself or other people to play.


Adding too much realism in games aren't as fun as people think.  Video games are meant to be fun.  So anything that prevents people from having fun, e.g. seeing their own entities get destroyed by their own projectiles, should be taken into consideration.


You could just brush that off and say that this is how you want your game.  That's your choice, that's your game.

#5232101 Code design/architecture

Posted by alnite on 31 May 2015 - 11:48 PM

My share; also review code of others, who didn't get that feedback.
Could be a win/ win: both better synchronized overall code and learn from the other code "ways"


+1 for code review.


Code design is a personal preference.  However, you are working on a team here.  You are not the only one working on that code base.  So, brainstorm the design/architectural choices.


Some guidelines:

  1. Consistency, even if it's bad.  It's easier to digest a consistently bad code, rather than reading a mix of good and bad practices thrown in together.  For example, it is more frustrating to see code that uses snake_case_for_its_method_names with other methods in camelCase and even lptrHungarianCase mixed in together.  If the code is already in Hungarian notation, even if you don't agree with it, keep it in Hungarian.
  2. Modularity.  Proper separation of controls between your classes and objects.  If you are following the MVC pattern, don't put controllers stuff into your views and models.  Views for rendering only, and models for that specific model-related logic only.  Even though this makes your code more verbose, it will be easier to maintain.


The team lead is also partly responsible here.  He or she should have established some common best practices when you start working there.  I would go through this for every new team member we hire.  The team lead needs to establish some process that works for the team.  For example, recently we hired an engineer who likes to commit to the master branch directly, even when his commits are partially working.  When you have automated build and testing going, this will flag a lot of errors for every commit.  The remedy to this is to NOT remain silent and unload your frustration on the yearly review.  The remedy is proper communication immediately.  Establish a code review process before every commit, and make sure team members are fluent on the git protocols (resolving conflicts, branching, merging, rebasing, etc), or whatever code versioning tools you use.


Failure to establish this communication is the fault of the team lead.

#5229883 Communication between objects and systems in Game engines.

Posted by alnite on 19 May 2015 - 12:41 PM

If you haven't gotten too far in your engine development, you really should have a generic entity that respects the physics system.  This includes all movable and collidable objects in your game.  If your player can fall and stand on the ground, bump into other objects or walls, then I presume there are other objects too that share this same functionality.  These objects should inherit from a common parent.  This is where you put your collision code.

#5228798 (Best Practice) Multithreading instantiation

Posted by alnite on 13 May 2015 - 09:44 AM

If you think about the sequence of steps, we can say that in order to fully instantiate this object, thread 1 needs to inform thread 2 that it has completed its part, and thread 2 needs to inform thread 3, and so on until thread N.  So the chain of process is sequential that the threads must wait until the previous thread completes its job.  To me, this sounds like something that you should do inside a single thread, rather than split the work into multiple threads and create unnecessary complexity.


So, I would go with the factory object idea.  If you are concerned with the performance, you actually want to initialize all objects at the loading screen.  Creating and destroying objects as your game/simulation is running and rendering is typically a bad idea, especially loading textures and accessing the hard drives.  If you have to remove objects from the scene, you want to have a flag in your object that you can toggle on and off, rather than invoking the constructor/destructor, and have an object pool to manage inactive objects.


This way, all your objects are already fully initialized and ready to use before you enter your multi-threaded environment.