Jump to content

  • Log In with Google      Sign In   
  • Create Account

Michael Tanczos

Member Since 14 Jun 1999
Offline Last Active Yesterday, 02:02 PM

#5040681 Article Inspiration

Posted by Michael Tanczos on 07 March 2013 - 09:54 PM

The more I think about it, the more I'm liking the idea of having some articles that are part of an education track.. similar to how a textbook would work.   We'd just need to make sure that they build on each other.   I know as a teacher there isn't much "computer science" curriculum out there that uses game development to teach programming.   We could potentially come up with something high school students around the world could use if we can get teachers to use our site as well.

For the independent minded student they'd be able to follow the curriculum for free.   As a teacher though most curriculum that you can buy also includes challenge projects, questions, assignments, tests, etc.




#5039817 Article Inspiration

Posted by Michael Tanczos on 05 March 2013 - 07:51 PM

It just occurred to me. What ever happened to the OGL site that was (or still is) hosted on GD.Net. Is anyone updating that? Or is it dead and buried?

 

nehe.gamedev.net?




#5039815 Article Inspiration

Posted by Michael Tanczos on 05 March 2013 - 07:47 PM

While it's a huge effort there is a ton of value in motivating game developers to give back.   We should all have the ability to take an article someone publishes here and not only vet it but comment on it and share additional ideas.

What about editing? Can members of the community edit the articles, improving their wording, grammar, and code snippets to improve overall quality? Adding additional screenshots to visually demonstrate each step?

Even if one person writes the article, and has his name on the article, the article needs to be brushed up and improved by peers, especially and things change overtime.

>>We should also know without a doubt that we're not getting ourselves into legal hot water if we use the published code in commercial applications.

Will you have a standard code license available? (Preferably something like MIT, Boost License, or public domain)

 

 

License options right now include MIT, Z-Lib, Microsoft Public License, LGPLv3, Public Domain, as well as our own which is currently in draft form:

 

http://www.gamedev.net/page/resources/_/gdnethelp/gamedevnet-open-license-draft-1-r2956

 

The purpose of our own license is to allow free use of the source in commercial applications, allow redistribution of the source as part of a larger work as long as the author of that code is not misrepresented, and that the article itself that accompanies the source may only be copied and republished with permission from the author.  The point is to license both the article AND the source a bit differently.   This will be our default license for articles but others will be available.




#5039731 Article Inspiration

Posted by Michael Tanczos on 05 March 2013 - 04:11 PM

I'm curious what you are envisioning as an ideal end result.

 


Are you imagining something like Wikipedia for games?  

Or a comprehensive suite of Game Programming Gems online books and tutorials?  

Or a supplement/replacement for the trade schools like FullSail, organized as course material?

Or a combination of the above?

Or something else entirely?

 

To help with the early game, it would help to know the end game.

 

This is a great question actually since I didn't talk much about the end result.

 

The end result is a community effort for game development that can match the same type of effort that Codeproject.com has for Applications/.NET stuff.   They have a huge community over there that constantly is creating great tutorials that pop up all the time if you do related google searches.   For the game development community everything is so fragmented across various blogs and there aren't many large independent sites out there..   No offense to gama but they are backed by a huge publishing company and they have profit motives behind everything.

 

While it's a huge effort there is a ton of value in motivating game developers to give back.   We should all have the ability to take an article someone publishes here and not only vet it but comment on it and share additional ideas.   We should also know without a doubt that we're not getting ourselves into legal hot water if we use the published code in commercial applications.

 

Wikipedia is great for giving some background information on various algorithms, but they don't cover some of the topics in the way programmers might like.   I want to see theory along side of implementation details.   Our community needs to be a huge part of the process of being an author.

 

For me as a teacher I want to see series of incremental tutorials I can put together that will allow my students to become better programmers and game developers.

 

I'll write more on this subject later, but these are some initial thoughts.   The challenge here is in shifting the way our community thinks about writing and sharing.  




#5039567 Article Inspiration

Posted by Michael Tanczos on 05 March 2013 - 10:45 AM

This is a great ideea,however I'm wondering if it's possible for you to complete it.I mean look at all the subjects!

 

This list so far is the tip of the iceberg.. and I'd like to see it expanded to thousands of topics.   If you look at the list as a whole it will be huge, but when you narrow down on a more focused part of the list it should be easy for an author to find something to write about.




#5039331 Article Inspiration

Posted by Michael Tanczos on 04 March 2013 - 09:58 PM

More basic art topics would be nice, particularly targeted at absolute beginners/non-artists:

  • Lighting/Shading
  • Perspective
  • Principles of animation
  • Figure Drawing/proportions
  • Color Theory
  • How is Game Art different?
  • Vector vs Raster (+ vs Pixel)
  • Assets vs concept art
  • Software

I'd be comfortable covering more of those topics at an introductory level, even, if you guys are looking for authors. Could we even use material modified from the gamedev.net collection books?

 

Absolutely.   Stuff from our books is fine.   If you'd like you can begin by just getting one article up here:  http://www.gamedev.net/page/resources/_/creative/visual-arts/

 

Visual Arts isn't necessarily the best category name but it lines up with the forum.   Just make sure that you choose good tags for articles.  Also note that you can drag and drop images directly into the article editor.  It was designed specifically for our articles.

 

I have moved you into the Crossbones group.  As a member of the Crossbones group you will have all the privileges of GDNet+ and can be part of of our movement to turn this site into a huge resource of articles for game developers.   The only catch is you have to also finish the article.  ;)

 

If anybody else is willing to jump on board today with one of these topics PM me and I'll add you to this group.   If you are a member of this core group you can be part of changing our community for the better forever and helping developers all over the world.   Why crossbones?  Because pirates are cool.. and they were always outnumbered by much larger forces against them.  I figure creating this kind of change won't be easy.. so it fits.




#5039326 Article Topics: Suggested Projects

Posted by Michael Tanczos on 04 March 2013 - 09:42 PM

I could probably do a write-up on it, i'll try to have something by Wednesday or Thursday.

 

(should i just make a post in this forum, or?)

 

You can create it here as a draft:  http://www.gamedev.net/page/resources/_/technical/game-programming/

 

As a member of the Crossbones group you will have all the privileges of GDNet+ and will be part of of our movement to turn this site into a huge resource of articles for game developers.   The only catch is you have to also finish the article. 

 

If anybody else is willing to jump on board today with one of these topics PM me and I'll add you to this group.   If you are a member of this core group you can be part of changing our community for the better forever and helping developers all over the world.   Why crossbones?  Because pirates are cool.. and they were always outnumbered by much larger forces against them.  I figure creating this kind of change won't be easy.. so it fits.




#5039311 Article Topics: Math and Physics

Posted by Michael Tanczos on 04 March 2013 - 09:14 PM

Here is a list of Math and Physics topics so far.   This list should include anything math or physics related that would directly benefit game developers.   The purpose of this list is to serve to inspire others with topic ideas.  


 

Note:  This post is an offshoot of http://www.gamedev.net/topic/639725-article-inspiration/ and is intended to allow us to focus in one one particular area.  I will add onto this list as suggestions are added.

         

Physics


Physics - Basic 2D Physics

Simulating 2d Linear Velocity

Simulating 2d Gravity


Math


Math - Introduction to Matrices

Coordinate Systems
Introduction to 2D Vectors / Common 2D Vector Operations (Reflection, Rotations, Scaling)

2D Collision Detection (point and point, point and circle, rectangles, polygons, etc)

Pixel Perfect Collision Detection
3D Collision Detection
Interpolation/extrapolation (basic stuff, SLERP, using quaternions to interpolate matrices...)
Procedural generation of content (noise of all sorts and how to combine it to get results)
Waypoint Path Following (with both straight and smooth curved lines - e.g. Splines)      

Compute geometric center of object (array of positions)
Compute center of mass of objects with thin shells
Compute center of mass of solid objects

 

What additional topics should we have in our article library?




#5039024 Article Inspiration

Posted by Michael Tanczos on 04 March 2013 - 07:14 AM

We are going to be launching one of the biggest community efforts to build a comprehensive game development library of topics since our initial creation back in 1999.   Our goal is to ensure that we as a community can build a resource library that all game developers can use for years to come and is entirely free to use.   It will be fully tagged, easily searchable and should provide source code examples wherever possible.   The look of articles should be consistent and clean, almost like a book of sorts.

 

I'm looking for people who can help begin the process by suggesting article topics that you would expect a complete library of game development articles to have.   The skill range is from beginner to expert.   Literally I am asking for article topics that cover every facet of the development process.   Don't worry about checking to see if our archive already has these topics and don't worry about duplicating other ideas in this thread.   Initially for this forum we can list ideas in this thread and I'll combine them into a running list and cull out duplicates.  

 

Note:  The list below is being updated as people post new ideas so it will be constantly evolving over the life of this thread

 

Some topic ideas so far:

 

Physics

http://www.gamedev.net/topic/639778-article-topics-math-and-physics/

 

Math

http://www.gamedev.net/topic/639778-article-topics-math-and-physics/

 
 

Suggested Projects

http://www.gamedev.net/topic/639775-article-topics-suggested-projects/

 

Game Architecture

How to make a save system/replay system/undo-redo system

How to make effects that apply for some time (spells, power ups)

Introduction into scene traversal ( scene graphs, portals, ...)
Resource management ( real-time reloading of assets, load resources from archives during release builds,...)
Timestepping

Reinforcements of just how important state machines are in game development.

State machines in managing game state
State machines in managing object lifetime
State machines in game-style AI  (and the difference between machine learning and game AI)
State machines in animations
Frame independent movement and fixed time-steps
Logging systems
Message bus/ global event systems
Local event systems
Hooks into scripting systems
Hooks into animation systems
Hooks into asynchronous systems
Hooks into OS systems
Hooks into existing libraries
Serialization and IO: How to serialize and deserialize data
Serialization and IO: Applications of serialization in save games and persistance
Serialization and IO: Applications of serialization in interprocess communication
Serialization and IO: Applications of serialization in local multiplayer games.
Serialization and IO: Applications of serialization in networked games.
 
APIs and Tools

The major 2D frameworks and hardware abstraction layers: SDL, Allegro, SFML

All the 3D engines: Unity, Ogre, Irrlicht, etc.

All the cross-platform mobile game frameworks: Corona, cocos2d-x, Marmalade, etc.

All of the physics engines: Bullet, Box2d, Chipmunk, etc.

 

Game Programming

Beginner's Guide to Game Programming

How do I Make Games?  

How Sprite Animation Works

Working with Sprite Sheets

Multithreading - Not the low level stuff but effective uses in game development (for example demo showing how to correctly separate the render thread from main thread)
Introduction into sound programming
Introduction into cross platform development ( how to use make files etc)
Introduction into localization

2D / 3D Resolution Independence

Using asynchronous calls from the OS and other libraries
Using scripting libraries
Why scripting languages are useful
Incorporating scripting engines into your game
Grab-bag of useful techniques, such as auto-reloading of resources, in-game tuning, live patching of a running process, and much more.
 
 
 

Game Design

Creating a Game Design Document

Character Design

Genres of gameplay
Evolution of games
Implementation systems for introducing stories into games
Achievement systems (technical side of "how to implement them" and design side "why and how to include them")
Punishment systems (how to teach meta-game/rules etc)
Goals and motivation (short-term: collect coins/defeat enemies, mid-term: reach level exit as fast as possible, long-term goals: rescue princess)
Feedback! (make users aware of every important state, acknowledge input, make aware of options etc.)
Onion layer model (core game, meta game, tokens, ...)
 
Lighting
Realistic / non-realistic shaders
Global illumination techniques (at least an overview and a few pointers to techniques used in specific games)
Shadow maps
basic algorithm explained in exhaustive detail (explain everything, make no assumptions)
exponential shadow mapping (current state of the art - explain everything)
variance shadow mapping (current state of the art - explain everything)
 
 

Writing

Lexicon of common game terms (with translations for localization) with easy downloading

Creative writing for games
Technical writing for games 
Writing spoken dialogue for games
Story writing and narration

How to develop background stories for games.

 

Program Design 
Design patterns and antipatterns
DIY vs Libraries.  Why libraries are usually better, and why you still need to know what is inside.
Basic game code architectures (for projects of different types and sizes, to give an idea of how to organize all that code and data)
How to keep code error free (simple stuff like logging or asserts or watever)
Security measures for protecting games from piracy
Importance of commenting code
 
CPU, Memory and Performance Optimizations
Introduction into SIMD programming
Introduction into memory management (for example allocation tracking, how to use dlmalloc, virtual memory,... )
Introduction into optimization (performance)
Introduction into programming tools ( profilers, graphics debuggers, ... )
Memory optimizations ( reduce total used memory, access patterns,...)
Basics of all hardware: the system bus; relative time between the CPU, cache, ram, and storage; cpu instructions; cycles; etc.
What we HAD twenty years ago (aka: what many books teach) and what we HAVE today.
Basics of modern hardware architecture, including long pipelines, multi-instruction decoding, out-of-order cores, speculative execution, etc.
Optimizations that used to make sense decades ago, but no longer do, and why.
 
Project Management (?)
Introduction to Revision Control Systems
Source version control: Git
Source version control: Subversion
Quality Assurance and Bug Testing
Managing Beta Testers
Refactoring
Debugging
Profiling
Optimizing
Automated Build systems
Tools development
Tools pipeline
How to work with teams remotely for game projects.

How to improve your communication skills for developers and designers.

Project management for games, Agile, PMP, etc...

 
User Interfaces
Building menus and controls of various kinds
How to make remappable keys
 
AI

http://www.gamedev.net/topic/640115-suggested-topics-artificial-intelligence/

 
Data Structures & Algorithms
Algorithms: Classification
Algorithms: Basics of complexity.  Understanding Big-O. Learning what is fast, what is slow, and what is impossible.
Algorithms: Divide and conquer, recursion, tree traversal
Algorithms: Assorted sorting routines, from bubble sort to quicksort, radix sort, mergesort, and shell sort, and why sometimes it is best to use an atypical sorting routine
Algorithms: Searching routines: sequential, binary search, binary search trees, indirect binary searches, trees, balanced trees, 
Algorithms: String processing
Algorithms: Pattern matching and regular expressions
Algorithms: Graph searching, depth-first and breadth first, both recursive and nonrecursive.
Algorithms: Range searching
Algorithms: Geometric algorithms
Algorithms: Closest point
Algorithms: Geometric intersections (point/triangle, point/sphere, ray/sphere, ray/tri, tri/tri, tri/sphere, etc)
Algorithms: Finding a convex hull.
Algorithms: kD searching and spatial grids
Data Structures: Arrays and linked lists.
Data Structures: Stacks and queues.
Data Structures: Trees and heaps and sets and maps.
Data Structures: Trees of all sorts (for searching, efficient storage of sparse data) - a language agnostic version along with some specific implementations
Data Structures: Graphs: cyclic and acyclic, directed and nondirectional
Data Structures: Trees and their relationship to graphs
Data Structures: Using 1D structures to represent kD spatial areas
Data Structures: Connectivity, weighted graphs, network flows, 
How to represent objects in code (creatures, buildings, inventory items...)
How to format your resources (images, settings, whatever, file or embedded in code etc.)
Fundamental data types and composite objects.  Why we need both.
Producer/Consumer models
Applications of producer/consumer models
Compiler theory
Operating systems
Formal languages
Parallel processing
Theory of parallel processing
Basic parallel systems like master/workers and trivially parallel problems, parallel search
More advanced parallel algorithms; parallel sort, parallel communication, load balancing
Dynamic programming
 
Multiplayer Programming
 
Game Art

Lighting/Shading

Perspective

Principles of animation

Figure Drawing/proportions

Color Theory

How is Game Art different?

Vector vs Raster (+ vs Pixel)

Assets vs concept art

Software

 

I'm keeping the initial list short because I'd like to get this topic out there and open to suggestions.




#5037686 Stroke of integer genius

Posted by Michael Tanczos on 28 February 2013 - 12:48 PM

I should never have digged through this part of the code base.

In a function (EstimateTime), a background thread with a while(true) loop (terminated using Abort() -- yeah, Abort), at the end I found this comment:

 

Thread.Sleep(500); // Estimate time every 5 seconds.

 

Yeah, that's not how milliseconds work.

And why not use the built in C# class Timer?

 

I don't know. I give up.

 

Thanks for these examples.  I use them as "warm up" exercises for the C# programming class I teach.   My 16-17 year old students wondered why anybody in their right mind would have used an int for that disk space operation if you were working with numbers that should easily be 2+ billion.   One of my female students chimed in and wondered why they would do that given that integer division will result in truncated remainders.. she thought it would dramatically skew the calculation.  I wonder how many of them would have caught it if it was a debugging exercise as part of a larger project example though.




#5036927 Why do it the easy way?

Posted by Michael Tanczos on 26 February 2013 - 06:17 PM

You have it easy, you are not maintaining legacy PHP code.

This is direct copy-paste from code currently in production.

Guess what is it doing. Hint: in function name.

 

 

8)   Holy.. anal...   You know, this would be quite an odd naming convention rule to walk into if you got hired by a company.  (Use whatever variable names you want, as long as they include at least one porn industry term)

 

long long johnson = 69 & 0;  // Initialize counter to zero

 

That code looks pretty ridiculous for what it does.  I would think you could use a regex for this without much trouble.




#5036528 Why do it the easy way?

Posted by Michael Tanczos on 25 February 2013 - 06:46 PM

Is it even possible to have *too* many ternary operators?  

 

bool isActive = ((running && !done) ? (done || running) : !(running && done)) ? true : (1==2);




#5036400 New forum - Coding Horrors

Posted by Michael Tanczos on 25 February 2013 - 12:31 PM

I'm just popping in a new post here for this forum we're kicking off.   The description for this forum is simply this:

 

Discuss software design issues, quirky things you've found, asshat approaches to problems, shitty code your co-workers wrote, shitty code you yourself wrote and wondered what you were thinking, elegant problem solutions (to flip things around), design patterns, "hey look I can write a compiler with one line of code because I'm so clever" type stuff

 

This is a for-fun forum where you can pretty much discuss software design issues including such as:

 

  • Why every programmer should use singletons
  • Why OpenGL is far superior to DirectX
  • Using Goto is perfectly fine
  • Why professional programmers who only code during their day jobs will never be as good as those who code outside of work
  • Why commenting EVERY SINGLE LINE OF CODE is important   // add x to y and store inside of sum

 

 

   ....
   // tCount keeps showing up negative here for some reason..  it should never be negative
 
   tCount = sqrt(tCount*tCount);  // Fixed!
 

 

It is for posting pieces of code that we can all look back on and laugh about.   Code samples are also appreciated.. we love code.   We also love related comics as well.

 

 

computer_problems.png

 

 

 

Glob pattern matcher anyone (*)?

 

main(int c,char**v){return!m(v[1],v[2]);}m(char*s,char*t){return*t-42?*s?63==*t|*s==*t&&m(s+1,t+1):!*t:m(s,t+1)||*s&&m(s+1,t);}

 

Share your frustrations.. share your triumphs.. Let the games begin.




#5032741 Official GameDev.net App

Posted by Michael Tanczos on 15 February 2013 - 12:18 PM

There is in fact an iphone app for this bulletin board software.   Is the main issue the logins?   I'm trying to figure out a way to make the "Content" pages we have (everything that isn't forums, journals, gallery, messenger) suck less on mobile but it's not easy.

 

What would be the goals of such an app?




#5026641 I think my school missed some steps...

Posted by Michael Tanczos on 28 January 2013 - 09:41 PM

In most university settings the university pays the instructor and the student pays the university, but the idea that you pay the instructor's salary really is unimportant unless the school is ridiculously small.   College professors tend to be insulated from caring about that.   Truthfully, seeing the prof is good to try and get an idea of why the course sequence exists as it does.. but it probably won't help you in the course.

 

I'm a high school teacher and we start with C# using console applications pretty much exclusively just to get a lot of the various programming concepts down.  With college level courses though there isn't always a continuity to how they are presented.. even if a course pathway exists.   In your case I'm sure the idea is to stretch your ability to adapt to something different.   This is about working your ass off to overcome obstacles.   The most important thing you can pick up from this process is to never be intimidated when presented with a new technology, because that will happen for the rest of your life.

 

My advice would be this.. you have an idea of how to program so you can now pick up a scripting language and run with it.   Experiment with what you are doing as much as possible and encourage your teammates to do so as well.  Stop worrying about what you missed in between.. you didn't miss anything.  You are going to fill that gap with hard work, and being able to do that is what you are going to get out of the course.






PARTNERS