Are you, in fact, a pregnant lady who lives in the apartment next door to Superdeath's parents? - Commodore

Create an account  

 
Recommend me a (game) programming book

So I've ordered a book, and after a couple weeks of waiting they've said they can't provide it. No money lost because I haven't paid upfront.

However, they've given me a discount code I can use to buy any book. Since there's no another "conan from Africa", I'm thinking about something related to programming and/or games. Are there any books you could recommend me ?

My programming skills are somewhere between beginner and average. I've written a bunch of scripts and small programs in ANSI C, Python, Bash (and Bachelor's degree in CS). Python is my favourite, I tolerate ANSI C, but have heard scary stories about Java and especially C++. I would especially appreciate books which teach good practices which apply to all languages. Not how to use language X, but new ways of thinking.

My areas of interest are: object-oriented programming, Python, user interfaces, maybe functional programming, game design and programming, turn-based games(pathfinding, FOV), geometry, vectors and moving objects. AI programming doesn't sound fun to me (not enough new stuff, rather you try to make AI understand what you already have).

So, what would you read in my place ? Currently among my favourites are:


Code Complete
Design Patterns
AI Game Programming Wisdom
Something about wxwidgets/Qt
Reply

b0rsuk Wrote:My areas of interest are: object-oriented programming, Python, user interfaces, maybe functional programming, game design and programming, turn-based games(pathfinding, FOV), geometry, vectors and moving objects. AI programming doesn't sound fun to me (not enough new stuff, rather you try to make AI understand what you already have).

I don't have any particular recommendations, but do have a point to throw in here. "Game programming" is monstrously too wide a discipline to cover in one book. "Game programming" includes at least these sub-disciplines (for non-Windows wonks, replace the DirectX stuff as platform appropriate):

- Basic DirectX, like displaying and moving sprites and text
- 3D object and model creation, texturing, and animating
- Basic Direct3D/OpenGL, display that model
- 3D geometry processing, move that model around and light it
- 3D object manipulation, detect collisions and implement the results
- 3D camera movement and controls
- DirectSound
- Basic I/O programming, like controller input and state storage to a savegame file
- Basic tools programming, like installer and patcher
- Networking, also integration with Steam et al
- Rules design
- Rules development and balancing (very distinct from design; guess which Civ 5 has and doesn't)
- UI design, which is very distinct from:
- UI programming, all sorts of APIs to draw text and buttons and dialogs
- AI which includes a host of sub-disciplines, from pathfinding up to the grand strategic level

The reality is, the bulk of what goes into game programming is actually pretty boring. What we consider the fun part, the rules design and implementation, is the proverbial tip of the iceberg on top of all the basic video and sound and UI and networking and tools code that we all take for granted. Doing all that stuff is how you enter the game industry. The top game designers like Sid Meier and Soren and Jon Shafer only got there after thoroughly paying their dues working up from the bottom.
Reply

The question is as follows: what book should I read considering I have one discount coupon. I will learn most of topics that interest me, in time, but that's not the point.


-----------
...and before we go further down that road, no DirectX. I don't intend to touch windows ever again. DirectX doesn't run on Linux.

I'm not too keen on OpenGL either - it's more graphics, not gameplay programming. Game engine, graphical* interface, sometimes AI - that's ok. Currently I'm playing around with vavoom (source port for DooM/Heretic/Hexen/Strife which uses C-like language for game logic). I'm not interested in making it look prettier, just programming interesting monster, weapon, projectile behaviour. Special effects, perhaps.

* Not a must, I play roguelikes too.
Reply

Also bear in mind that the bulk of people who work in the modern gaming industry are artists, the ones who create the art assets and work on other visuals. Civ4's credits list 18 programmers and 27 artists, and the key limitation on what could go into the game was how much time remained to create the art assets.

I'm sorry I can't recommend anything for you, since I'm not a programmer myself. [Image: smile.gif]
Follow Sullla: Website | YouTube | Livestream | Twitter | Discord
Reply

And I don't necessarily want to work in the game industry. I've heard plenty about it already. I can work as a generic coder, and make games (or mods) in my spare time.
Reply

Hi smile

You'll have to give us more info on what you want to do with your spare-time-game-programming.
As others have said, there is too much involved in game design and production to fit in any one book.
If it is just programming you want to do, then tell us what platform and what type of games.
I've had a game distributed worldwide as Public Domain on the Amiga500, written in BlitzBasic, but I wouldn't dream of doing something like that again for the rest of my life.

As for game programming recommendations, learn a platform and it's I/O handling, Event Loop and Exceptions and, since you want to shy away from the established suites and libraries, learn to take control of the hardware yourself.
That last point may be nigh on impossible with today's manufacturers and hybrid set ups though.
Personally, I don't think C++ is as bad as you might think.
It is a popular choice for Object Oriented projects, but limited to the platforms they are designed for.
Can't say anything about the other languages you mentioned as I've only worked with Pascal on the Mac when I was still doing a Certificate in Computer Science as a returning student (I already had a Degree in Science [Chemistry]).

All that said, I hope you find something and enjoy cutting some code,
smile
Moriah.
One drop of your blood I spill will pay for one tear you made me shed, until the ground can soak up no more
Reply

Hi,

offtopic:
Moriah Wrote:I've had a game distributed worldwide as Public Domain on the Amiga500
Ha! Me too. smile Distributed via Fred Fish, or by other means? What was it called? Maybe I've played it...

Quote:but I wouldn't dream of doing something like that again for the rest of my life.
Why?

-Kylearan
There are two kinds of fools. One says, "This is old, and therefore good." And one says, "This is new, and therefore better." - John Brunner, The Shockwave Rider
Reply

Hi smile

It was called Bombs!
Just a version of Minesweeper, customizable from 25 to 4000 squares.
It was distributed by the BlitzBasic crew to showcase their product.
I also had a card game called Sevens, but it never left my own dwelling.
And a nice Mac version of sliding tiles, which was a product of a Year 1 Computer Science assignment, that still amused people several years later when I was employed as a computer technician.

Why not do it again?
I had a working prototype in 2 days, a clean version soon after.
Polishing and error handling took 6 months.
Computer programming is a task that sticks with me 24/7, not the way I want to go through life.
I'd rather hop on my bike and go for a ride to enjoy the open air, not to keep thinking about the next animation for that sprite at the start of a new level ... you know what I mean.
Another factor was working as a computer geek at a school, I slowly went downhill through the winters, developing S.A.D. (Seasonal Affected Disorder), so I went back to physical outdoor jobs.

smile
Moriah.
One drop of your blood I spill will pay for one tear you made me shed, until the ground can soak up no more
Reply

Those were the days. I taught myself Basic with Vic20. I had programmed a couple levels of Pacman clone but I didn't have the skills to make the ghosts smart(er), not with the Vic20' processing speed and memory limit (that's my excuses anyway). The only other game I'd programmed on the Vic20 was Whack a Mole. It wasn't ready for prime time, but I and the family had many hours of fun on it smile

Ever since my first Amiga (I had six of them at one time) There was no time for, programming, except writing scripts for total and automated control of programs such as Art Professional and Scala. All the time was taken up by 3D animation and video editing on the Toaster. Those were the best of my computing days, when the machines were pushed to their limits and beyond, doing "real work".

I was fully immersed. I remember there was a three months period I was (divorced then) between jobs, I was up 18+ hours each day working (no gaming) on the computer and still wish there were more hours in a day. Except for a few quick trips to the grocery store, I was MIA as far as my friends and family were concerned. I was in heaven!


KoP
Reply

Code Complete is a great book, good to hear you're getting your fundamentals up.

The first question is what sort of game you want to make. Small, casual games for mobile devices/Facebook are all the rage and where the real money is, and have the advantage of being very doable by a single person. If you already know C, then learning Objective-C/Cocoa shouldn't be terribly difficult. I have gotten reasonably competent at iPhone programming just through web resources, and I'm sure the same exist for Facebook as well as Android and other mobile platforms.

If you want to possibly get into a more traditional game company, C++ is practically a must. It's not universal, but most companies that are developing DirectX/OpenGL games are still C++ shops. The good news is C++ is actually much easier to use than C once you have learned it, it's a much lazier, sloppier language!

If you do want to learn C++ and OO concepts, you have a few choices. Bjarne Stroustrup (the inventor of C++) has an encyclopedic C++ manual out there that will teach you the language but is not very readable. My recommendation is Thinking in C++ by Bruce Eckel. It's what I used in college, it's highly respected, comprehensive and very readable. It's old (looks like they last updated it in 2003), but C++ is an old language so you don't really need a recent book, Eckel's book being old is actually good in a way because it's very inexpensive.

I also recommend a good STL book, as knowing the STL intimately is central to being an effective C++ programmer. The C++ Standard Library: A Tutorial and Reference by Nicolai Josuittis is the gold standard for that.

Finally, I highly recommend this blog: http://gamedevlessons.com/?page=free It's well written and incredibly informative. It talks about everything game programming related, from code to educational possibilities to the ins and outs of being a professional game developer. Anyone who is interested in getting into video games should read it end-to-end.
Reply



Forum Jump: