Jump to content

  • Log In with Google      Sign In   
  • Create Account

CRYP7IK

Member Since 14 May 2006
Offline Last Active Aug 21 2016 11:39 PM

#5262660 If a game studio asks you to write a small code, what would you write?

Posted by on 18 November 2015 - 05:44 PM

 

Hey CRYP7IK, thanks for the link. I will check it out. In what language is written?

 

 

It's just a Unity game written in C#. It just shows I can write readable code and have a game that is coherent with a clear win\lose condition. Basically my suggestion is to show you can do what your responsibilities will be in the role.




#5262555 Starter APIs

Posted by on 18 November 2015 - 03:58 AM

Here is a free resource for game programming patterns: http://gameprogrammingpatterns.com/contents.html




#5261069 Inversion of control across libraries

Posted by on 08 November 2015 - 09:38 PM


My confusion comes from the three separate libraries in your example (Engine lib, GraphicsGL4 lib, and the Graphics DX9 lib) all needing to know of some kind of abstract/interface GraphicsEngine class.

 

You would have to have another Core lib that they all depend on which has the interfaces required (I think the only common one would be IUpdateable and IInitializable?). This is how I have done it in my engine.




#5242528 Is Extra Credits reliable to learn Game Design?

Posted by on 24 July 2015 - 06:07 PM

*crit*


Seriously though a lot of your stuff isn't even relevant to what I said but relevant to the thread. I don't mention anything like they can't or shouldn't make the videos in fact the more the merrier. I didn't mean they should teach factually wrong game design but they should teach something like: Here is a game that breaks our rules that is still good and this is why or Why you can and sometimes should break design 'guidelines'.

I merely stated the fact that what they teach isn't anything new not that they have to or should add new things although in my opinion that would bring them from okay to great. I mentioned that you can get the same information from other sources because some people prefer text:

http://archive.wizards.com/Magic/magazine/article.aspx?x=mtg/daily/mm/174
http://www.gamasutra.com/view/feature/132341/the_13_basic_principles_of_.php?page=2
http://www.gamasutra.com/view/feature/134842/personality_and_play_styles_a_.php

The first one is semi-relevant to game design but designing table top games can help with video games because it imposes physical restrictions to the design, restrictions can be good for budding developers and even senior ones (Looking at you Peter Molyneux)! The bottom two are basically his first few meaty videos.

 

To be able to intelligently break the rules, first you must knowledgeably know them. Otherwise, your design successes are accidental. They may still be successes, but you might not understand why they work in one situation but not another, preventing you from skillfully applying or ignoring the rules in the appropriate circumstances.


Agreed but there is still no golden rule which I think is good to mention to any designer before teaching anything to them, they'll have an epiphany eventually but it's best to just let them know straight away IMO.

Anyway my daughter just woke up so I'll have to end it there.

 


 




#5242285 Is Extra Credits reliable to learn Game Design?

Posted by on 23 July 2015 - 05:59 PM

Extra Credits is okay but their content is nothing new, you can find articles and other designers talking about the stuff he talks about way before he does it. He also pushes a very narrow view of design and while that view is the generally accepted view (Teach the player before any large penalty for failing) there are games that are successful that don't have this and while their design is technically bad it works for them.

 

That is what really matters in design. The Golden Rule: There is no golden rule.




#5226942 Adding non ECS features in an ECS engine (tilemap)?

Posted by on 03 May 2015 - 06:54 AM

Disregarding everything said in this thread:

 

  • TileMap is a 2D array of ints, it shouldn't be a component.
  • TileMapRenderer Contains a TileMap and uses it plus below component to render the map. Should be a component.
  • TileMapSettings links ints to sprites and is read by the TileMapRenderer (Via GetComponent or whatever you want). Should be a component.

The tile map renderer could also manage splitting into multiple meshes to optimise very large tile maps! Pretty robust I think.




#5220118 From scratch vs Unity

Posted by on 30 March 2015 - 01:38 AM

This is how I see it:

 

From scratch:

 

Pros:

  • You can edit the source code for free
  • Potentially better deployment capability 
  • Use your favourite language
  • No documentation needed, you know everything (Hopefully)
  • Can utilise any render features you want to support
  • Use it on your favourite OS

Cons:

  • Not battle tested
  • Takes a lot longer to get anything done
  • Potentially less deployment options

Unity

 

Pros:

  • Battle tested
  • Have things on screen in an afternoon
  • Highly extensible through editor scripts
  • Easily code logic and drag onto game objects
  • Scripting language and library features are excellent (Coroutines, attributes, serialisation, reflection)
  • Lots of examples, tutorials and a large community to get support from
  • Easily expose designer editable data for easy changing of gameplay from non-programmers

Cons:

  • Must purchase from the asset store or make your own editor extensions (Tile editor, source style editor etc)
  • Must purchase pro to get rid of logo branding or if you make over a certain amount of money
  • Missing some render features and there is nothing you can do about it unless you buy source code access
  • Will 'never' have a Linux editor
  • Lots of half finished systems (Input, Terrain etc)
  • Expensive source code access or be very popular

So this is why I do both. I really like how quickly and easily I can make a game with Unity knowing it will run fine on most hardware, however sometimes I'll run into something that doesn't really work or work as I expect it (E.g. no good collaborative support, the only way you can have code run is through a component that is attached to a gameobject) and that makes me want to use my own engine \ editor. So I do both, at work I use Unity because we just want the games done now and done with good hardware support at home I work on my own games using my own engine editor using my experience with Unity as a baseline.




#5199372 How can I create an installer for my game?

Posted by on 21 December 2014 - 12:43 AM

nsis is awesome, however if you are going cross platform route:

 

http://www.cmake.org/Wiki/CMake:Packaging_With_CPack

 

Is where it's at (IMO).




#5195179 Critique My Implementation Of Pong?

Posted by on 28 November 2014 - 07:35 AM

 

You have non-game specific code in your pong implementation please separate 'engine' code out into it's own module or library

Seems like a complete waste of time as well as overengineering for the sake of "ideal" correctness.

Separate your header and source files into different folders (include and source)

For a game? Why? He's not writing a library here, who is going to be including these headers besides the game itself?

A Paddle shouldn't handle it's input, take that out into a PaddleController class so you can easily add AI to your paddle.

Does he WANT to add AI?

Remove boiler plate code from main and turn it into a Game class, inherit from that when making Pong

While I agree about moving code out of main I don't really get where the assumption would be that he should make a game class and then inherit from it. He could just as easily have a "Game" class by itself.

Remove all magic number values from code and put them in json or xml files that describe things like game specific data (Paddle initial positions) and engine data (window size, title etc)

Removing magic numbers, sure. He could just as easily make them constants and should make that decision based on his usage, not simply throwing a bunch of random and possibly useless settings in an xml or json file and then getting library code together to load it and parse settings.

If theres one thing that wastes just as much time as bad code its overengineering code just because its the "pretty" thing to do.

 

 

Over engineering? It's simply making it easier for a reader to see what is actually game code and what isn't, seeing as he isn't the only person reading the code it isn't a complete waste of time. Good structure is rarely a waste of time, even in small projects.

 

For the same reason above, so people reading it can directly go to src or inc for whatever they want to look at. I didn't say he was writing a library. I don't know why you wouldn't do this 'for a game'.

 

Well, AI is just an example what if he wants to add a networked controller so another application could control a paddle via some port? It's all about SRP and makes it well designed, it is also maybe 10 minutes of work.

 

I was just following his other design patterns (i.e movable which things inherit from) and I think it fits.

 

Sure, constants would work, but require a recompilation every time, why aren't his shaders, materials etc constants as well? Again following what he already had in his game.

 

You want to see over-engineered?

 

  • Factories for everything, remove public constructors
  • Separate rendering and logic
  • Normalise all namespaces and add missing namespaces, make sure they have proper and long names.
  • Use premake or cmake (Preferably both) for agnostic compiler \ IDE project setup
  • Separate engine and game into different git repositories making use of sub-module
  • Add an asset database for handling resources (config files, materials, mesh etc)
  • Engine should definitely be it's own library(rather than just some code) and be seperated into core, math, render, physics, input, network, UI and game (WorldObject and Game class)
  • Input should be more generic and be loaded through a config file for ease of changing actions
  • Write a C interface for everything
  • Add a plugin system for mods (Allow use of hot-loaded dlls and scripts for at least 4 languages, make use of SWIG)
  • Capture metrics of players and send back to database using pig, hadoop and map reduce.

(Please continue this list)
 




#5195121 Critique My Implementation Of Pong?

Posted by on 28 November 2014 - 02:15 AM

Hrm, I am also going to critique your file structure while trying to not change your design decisions too much:

 

  • You have non-game specific code in your pong implementation please separate 'engine' code out into it's own module or library
  • Separate your header and source files into different folders (include and source)
  • Remove dlls from your source folders and put them in their own external library folder
  • Shader, material, texture and other resources should be in their own resources folder
  • A Paddle shouldn't handle it's input, take that out into a PaddleController class so you can easily add AI to your paddle.
  • Remove boiler plate code from main and turn it into a Game class, inherit from that when making Pong
  • Remove all magic number values from code and put them in json or xml files that describe things like game specific data (Paddle initial positions) and engine data (window size, title etc)

Once you do this a better critique can be done.




#5192558 Game engine architecture

Posted by on 12 November 2014 - 07:57 PM

I don't really know if I see your problem.

 

Let's see:

 

  • Physics system can have data that it will simulate physics and collision with
  • Render system can have data that it will render images with.
  • AI system can have data that it will path find with.

The main point is the data part. Lets take terrain as an example:

GameObject* myObject = new GameObject("name");

// I don't really know how your component system is working, but I'll go with a simple version
// Here is one solution, bring out the data structures into their own DLL that others depend on.
myObject->AddComponent(new TerrainData("data/myTerrain.tdata")) // (From DataStructs.dll)
myObject->AddComponent(new TerrainRenderer()) // Requires TerrainData (From Render.dll)
myObject->AddComponent(new TerrainCollider()) // Requires TerrainData (From Physics.dll)
myObject->AddComponent(new TerrainPathFinder()) // Requires TerrainData (From AI.dll)

// OR

// All use the same data file, but have it separately in their own data structures.
myObject->AddComponent(new TerrainRenderer("data/myTerrain.tdata")) // Requires data file \ array or something (From Render.dll)
myObject->AddComponent(new TerrainCollider("data/myTerrain.tdata")) // Requires data file \ array or something (From Physics.dll)
myObject->AddComponent(new TerrainPathFinder("data/myTerrain.tdata")) // Requires data file \ array or something (From AI.dll)





#5184702 LOL - I wrote a poem about OpenGL

Posted by on 02 October 2014 - 10:35 PM


OpenGL you know I love you, but like all lovers you're a.... difficult person!

 

My favourite part.




#5183368 CMake - ExternalProject targets slowing down everything

Posted by on 27 September 2014 - 06:25 PM

You can just check if you have already downloaded or built it by creating a file after download or build steps and checking for that file later on.

 

Here is where I got this code from: https://projects.kde.org/projects/kde/superbuild/repository/revisions/master/entry/SuperBuild.cmake

# are we building a source package or should we download from the internet ?
	
if(EXISTS ${CMAKE_SOURCE_DIR}/ThisIsASourcePackage.valid )	
  set(buildFromSourcePackage TRUE)
else()
  set(buildFromSourcePackage FALSE)
endif()



#5171988 Funniest line of code ever ?

Posted by on 06 August 2014 - 09:53 PM

https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

 

This whole fizz buzz implementation is hilarious.




#5157777 Creating a code editor/IDE

Posted by on 03 June 2014 - 05:00 AM

There are two projects that use wxWidgets \ scintilla for a code editor or IDE and they both have some form of auto-complete and snippets, they are also open source. They also show off plugin architecture and pretty much everything to do with getting your own IDE up.

 

code::blocks

codelite






PARTNERS