I've already mentioned UnSubject blog on the Kickstarter topic, yet again I found more and more good articles on the subject in this blog.
Well, while I don't think that Kickstarter idea is not good, actually I think it's good, but pragmatic analysis is that is missing. Every baker should read that blog, to have clear view of that Kickstarter really is. More projects on Kickstarter will fail though, and they deserve that. I guess any honest developer will benefit from reading it too.
Showing posts with label gamedev. Show all posts
Showing posts with label gamedev. Show all posts
Aug 7, 2013
Jan 31, 2013
XNA the end
This entry at Promit Roy's blog finally confirmes that any last hope of XNA should be left. This is, probably, better than nothing, however it was almost obvious with release of Windows 8 SDK with DirectX merged into it. Yet they gained some little respect at least from that point. This is, probably, the only point from which respect can be given.
First they they should say that earlier. Second, they should not drop XNA at all. Despite some negative aspects XNA was extremly intuitive and easy to work with. It was a huge success, enormous attention from developers of wide range of expecience, from novice to professionals. Terraria was written in XNA, a 1.5+ million sells title. They don't need even to add support for WinRT. Just a mere bugfixing, support and Visual Studio 2012 integration.
Enough rant. The question is, should you continue to use XNA? It, of course, depends. If you amateur or just started to learn game programming, it doesn't really matter, you can safely continue to write your first games. However, you can try to port your game to MonoGame to be ready for Windows 8. Last option is also to consider for writing your first more or less serious game, which, most probably you want it to evolve and live in future. Professionals can decide for thenselves I guess, but I guess XNA is no longer a valid option for pro game development.
First they they should say that earlier. Second, they should not drop XNA at all. Despite some negative aspects XNA was extremly intuitive and easy to work with. It was a huge success, enormous attention from developers of wide range of expecience, from novice to professionals. Terraria was written in XNA, a 1.5+ million sells title. They don't need even to add support for WinRT. Just a mere bugfixing, support and Visual Studio 2012 integration.
Enough rant. The question is, should you continue to use XNA? It, of course, depends. If you amateur or just started to learn game programming, it doesn't really matter, you can safely continue to write your first games. However, you can try to port your game to MonoGame to be ready for Windows 8. Last option is also to consider for writing your first more or less serious game, which, most probably you want it to evolve and live in future. Professionals can decide for thenselves I guess, but I guess XNA is no longer a valid option for pro game development.
Dec 18, 2012
Dec 17, 2012
A great article on Free-to-play games
An excellent article about Free-to-play games. Go read it now.
As for my personal opinion, I agree with Andrew in a way that every customer always wants a bargain. That's why, for example, I always buy every HumbleBundle that is out. If I even don't like any of the games (that is never happened, BTW) I wouldn't be angry at all, since I got it almost for free. OTOH, I will never buy a free-to-play game, since I'm guaranteed to make a not-a-bargain deal, and that's not the only thing. This kind of games are naturally corrupted, like an arcade, to make money out of you. It feels kind of weird, and I just ignore it, since there is a lot of other games available.
I feel sorry for a little kids (and their parents), which are particularly naive and vulnerable to this kind of abuse. They don't realize what this is and sometimes spend lots of money for some 'crystals' in a game with their favorite cartoon heroes. I guess that's inevitable evil of games becoming a less art and more money making industry.
I don't think that it poses any real threat to gamers, eventually all who exploit this approach to much will suffer the consequences. The only sad part here is that talent is wasted driven by greed.
As for my personal opinion, I agree with Andrew in a way that every customer always wants a bargain. That's why, for example, I always buy every HumbleBundle that is out. If I even don't like any of the games (that is never happened, BTW) I wouldn't be angry at all, since I got it almost for free. OTOH, I will never buy a free-to-play game, since I'm guaranteed to make a not-a-bargain deal, and that's not the only thing. This kind of games are naturally corrupted, like an arcade, to make money out of you. It feels kind of weird, and I just ignore it, since there is a lot of other games available.
I feel sorry for a little kids (and their parents), which are particularly naive and vulnerable to this kind of abuse. They don't realize what this is and sometimes spend lots of money for some 'crystals' in a game with their favorite cartoon heroes. I guess that's inevitable evil of games becoming a less art and more money making industry.
I don't think that it poses any real threat to gamers, eventually all who exploit this approach to much will suffer the consequences. The only sad part here is that talent is wasted driven by greed.
Nov 26, 2012
Kickstarter analysis
The one truly needed post about Kickstarter. A lot of references which are also worth visiting.
P.S. The one thing I really don't understand in modern web design, is a passion to make text not black. I mean like make text #707070. Is it just to make site harder to read, especially on a small phone screen? People, are you there? FTW!
P.S. The one thing I really don't understand in modern web design, is a passion to make text not black. I mean like make text #707070. Is it just to make site harder to read, especially on a small phone screen? People, are you there? FTW!
Aug 14, 2012
OUYA: first indie console
The phenomenon of indie games is out there for some years, and it's a great thing. However the only true indie platform was only PC. And PC is a great platform, but only for a personal amusement. But it's nothing compared to fun then you blay with you friend side by side, fighting to each other or against computer.
Since the great crash of 1983 the main game consoles were closed for indie developers. This wasn't major concern up until now, since indie devs are flourishing.
And OUYA perfectly hitted the spot. It's cheap and open to everyone. It's not that powerful, but indie games usually doesn't need that much power as AAA titles. OUYA is greatest thing that happened to console market for some last years. It will boost competition between console market players, which will be good for everyone. It will bring tons of new, beautiful games to people by creating an easy-to-enter market for indie developers.
It's success is inevitable, because it's just filling last missing piece in a complete puzzle.
Since the great crash of 1983 the main game consoles were closed for indie developers. This wasn't major concern up until now, since indie devs are flourishing.
And OUYA perfectly hitted the spot. It's cheap and open to everyone. It's not that powerful, but indie games usually doesn't need that much power as AAA titles. OUYA is greatest thing that happened to console market for some last years. It will boost competition between console market players, which will be good for everyone. It will bring tons of new, beautiful games to people by creating an easy-to-enter market for indie developers.
It's success is inevitable, because it's just filling last missing piece in a complete puzzle.
Aug 7, 2012
Thoughts on Starbound and PCG
Well, it's been awhile, my vacation was pretty good, thank you :).
Meanwhile Starbound team posted some updates. Some thoughts on that. First pickaxes are confirmed. This leads to conclusion that Starbound is definetely a Terraria clone, in a good sense of that. I mean look at Terraria it's a clone itself (of Minecraft of cousrse).
However it's became more and more obvious what will be the feature of Starbound. It's procedurally generated content (PCG). This is not a new thing per se, but Tiy has a vision of moving it to a next level.
Usually PCG is limited to thing which I call 'playfield' (major) and item properties (minor). In Terraria it's, for example, a world (earth) structure. Item properties can be for example some modified items which can then start to glow (enchanted sword, etc). In Starbound, most items itself are created via PCG (more of a pseudo-PCG) which means that not only stats, but visuals of an items are somehow unredictable. This is very cool.
The key question however is how well randoness will be controlled and constrained. By that I mean, that PCG games lacks that soul part of a manually designed worlds. Imagine, for example, Fallout with PCG land. One the one hand each game would be somehow unique, that's a good part. On the other hand, you loose sense of the game world reality. The real worlds are static. So, it's really a challenge for a Starbound team how story mode (if any) will deal with randomness.
Tiy already mentioned some kind of global coordinates which players can exchange with each other and which will lead to exact same location for any player. I assume this coordinates are basically the RNG seed values which will allow to recreate world precisely on another user machine. This feature is already very good.
As a conclusion: so far Starboud is looking pretty awesome! Can't wait to play it.
Meanwhile Starbound team posted some updates. Some thoughts on that. First pickaxes are confirmed. This leads to conclusion that Starbound is definetely a Terraria clone, in a good sense of that. I mean look at Terraria it's a clone itself (of Minecraft of cousrse).
However it's became more and more obvious what will be the feature of Starbound. It's procedurally generated content (PCG). This is not a new thing per se, but Tiy has a vision of moving it to a next level.
Usually PCG is limited to thing which I call 'playfield' (major) and item properties (minor). In Terraria it's, for example, a world (earth) structure. Item properties can be for example some modified items which can then start to glow (enchanted sword, etc). In Starbound, most items itself are created via PCG (more of a pseudo-PCG) which means that not only stats, but visuals of an items are somehow unredictable. This is very cool.
The key question however is how well randoness will be controlled and constrained. By that I mean, that PCG games lacks that soul part of a manually designed worlds. Imagine, for example, Fallout with PCG land. One the one hand each game would be somehow unique, that's a good part. On the other hand, you loose sense of the game world reality. The real worlds are static. So, it's really a challenge for a Starbound team how story mode (if any) will deal with randomness.
Tiy already mentioned some kind of global coordinates which players can exchange with each other and which will lead to exact same location for any player. I assume this coordinates are basically the RNG seed values which will allow to recreate world precisely on another user machine. This feature is already very good.
As a conclusion: so far Starboud is looking pretty awesome! Can't wait to play it.
May 10, 2012
Chasseur, part 1
Since the development of my previous project ended, I'm moving forward to my next project. As I mentioned in my previous post, I was thinking about a Super Spy Hunter (SSH) game clone. Now it's final, I'll be making SSH clone.
You can view full game completion here:
So now I'm at game architecture design stage. The very first thing I bumped into was: how to store such large levels? First of all I thought about somewhat natural solution to this: tile maps. But this maps would be quite large, and, more major thing, they make impossible (at least as I understand it) some features that original game demonstrates. The most natural way to do similar thing is to follow original game design, and the original game was a 256Kb ROM (amazing isn't it?). This is certanly not enough to store all maps as a tiles. I was also thinking about programmic generation of levels and user ashes999 make me certain, that reference game indeed uses some kind of procedural generated content. It can be like this:
You can view full game completion here:
So now I'm at game architecture design stage. The very first thing I bumped into was: how to store such large levels? First of all I thought about somewhat natural solution to this: tile maps. But this maps would be quite large, and, more major thing, they make impossible (at least as I understand it) some features that original game demonstrates. The most natural way to do similar thing is to follow original game design, and the original game was a 256Kb ROM (amazing isn't it?). This is certanly not enough to store all maps as a tiles. I was also thinking about programmic generation of levels and user ashes999 make me certain, that reference game indeed uses some kind of procedural generated content. It can be like this:
while next road section exist: get road section data; set road generation options (borders type, road type, etc); set road section lenght; while not end of a section: generate road; apply pseudorandom eye candy stuff;This way levels can be described in a pretty compact way.
May 8, 2012
Digger.NET in development, part 8
So the latest additions to the game looks somewhat good. Digger is drawing tunnels, eats crystals, and level advancement on eating all crystals.
However, I'm increasingly frustrated with original source decoding, since this process is actually takes more time, than actual coding of it in XNA. I'm not very excited in spending large amounts of time on this, since I want advance further into XNA. So I've decided to halt this project indefinetely. This was a good learning project, however I must admit it was a mistake to attempt to make a exact copy. I lost significant amounts of time studying unmaintainable code instead of something more useful. Yet now I feel much more stronger then I was at a start of a project, so now I'm thinking about next steps.
Most probably I will spend some time learning XNA using books, articles and tutorials. While doing this I will thing what kind of game I will try to make. I'm thinking about something like Super Spy Hunter, I actually really like this game:
But this is certanly not decided yet.
However, I'm increasingly frustrated with original source decoding, since this process is actually takes more time, than actual coding of it in XNA. I'm not very excited in spending large amounts of time on this, since I want advance further into XNA. So I've decided to halt this project indefinetely. This was a good learning project, however I must admit it was a mistake to attempt to make a exact copy. I lost significant amounts of time studying unmaintainable code instead of something more useful. Yet now I feel much more stronger then I was at a start of a project, so now I'm thinking about next steps.
Most probably I will spend some time learning XNA using books, articles and tutorials. While doing this I will thing what kind of game I will try to make. I'm thinking about something like Super Spy Hunter, I actually really like this game:
But this is certanly not decided yet.
May 4, 2012
Digger.NET in development, part 7
It's hard to monitor debug information in games using standard approach, using Visual Studio debugger breakpoints, watches, etc. for example. This breaks game cycle, hides visual output and useful only for catching special conditions. Also some data, like enemy AI calculated path is hard to analizy in it's internal form. I formulate this problem in this post at gamedev.stackexchange.com. This incredible lecture by Bret Victor shows why instant feedback (in our case it's just instant debug) is important, you definetely shoul watch it. This lecture impressed me, and that's probably how I begin to think about visualizing debug information.
Using techniques described in post I can visualize objects information like this:
The cell coordinate for digger object is displayed above him, and moves with him.
Using techniques described in post I can visualize objects information like this:
The cell coordinate for digger object is displayed above him, and moves with him.
May 1, 2012
Digger.NET in development, part 6
It was a little slowdown lately, however some key aspects of the game was implemented.
First of all tunnels drawing was implemented using RenderTarget2D technique. This also required some work on Digger.Convert project, since I didn't converted all required sprites. Now I'm tossing objects around trying to decouple logic and drawing parts of the game. Architecture never was my strong side unfotunatelly. Still I'm not letting it just go, if I feel something is wrong I stop and try to think how to manage it. I'm at the very early part of development, so decisions I make here is very important. As for visual progress, it can be seen as this:
It's a main game screen being initialized. It draws initial tunnels and gold bags.
Here is also some thoughts about project goals. I abandoned idea to fully understand and then, improve original code. This task not only seems now as extremely hard, it's also boring, and doesn't give me valuable experience I want. So now I concentrate on XNA port, and study source only to understand game logic. It also seems that I will not port many features of a Digger Remastered, because it's not looking interesting for me. I will port single player gameplay and then move further into modding of the game, or will start some new project (maybe both). Copying is hard, it's a good experience, but it's not much fun, then you create something new.
First of all tunnels drawing was implemented using RenderTarget2D technique. This also required some work on Digger.Convert project, since I didn't converted all required sprites. Now I'm tossing objects around trying to decouple logic and drawing parts of the game. Architecture never was my strong side unfotunatelly. Still I'm not letting it just go, if I feel something is wrong I stop and try to think how to manage it. I'm at the very early part of development, so decisions I make here is very important. As for visual progress, it can be seen as this:
It's a main game screen being initialized. It draws initial tunnels and gold bags.
Here is also some thoughts about project goals. I abandoned idea to fully understand and then, improve original code. This task not only seems now as extremely hard, it's also boring, and doesn't give me valuable experience I want. So now I concentrate on XNA port, and study source only to understand game logic. It also seems that I will not port many features of a Digger Remastered, because it's not looking interesting for me. I will port single player gameplay and then move further into modding of the game, or will start some new project (maybe both). Copying is hard, it's a good experience, but it's not much fun, then you create something new.
Apr 25, 2012
Game development podcasts, videos, etc.
This article data (and much more) can now be found here. I find that blogger platform was not suited well for managing of this kind of list.
Apr 24, 2012
Minecraft: The Story of Mojang
Nice video about Minecraft creator Marcus Persson and his new Mojang company. Fairly recent which is good. I'm impressed how 'Notch' is open about success of Minecraft. "It's almost impossible to repeat such success" he says, "it was sort of luck and right time" so modest.
I'm just bumped first time to this site BTW, but it sertanly deserves some digging around, looks like an interesting place.
Apr 21, 2012
XNA articles beginner should not miss
This article data (and much more) can now be found here. I find that blogger platform was not suited well for managing of this kind of list.
You may also find useful:
- XNA tutorinals beginner shouldn't miss
- XNA tools 2D game developer should not miss
You may also find useful:
- XNA tutorinals beginner shouldn't miss
- XNA tools 2D game developer should not miss
Apr 16, 2012
Street of Rage Remake v5
Holy sh*t! Have you seen this? Never believed this will ever will be possible, but it's true! The project page will say it all:
It has been 8 years of work, but the final version is here, this is complete and ready for download, Surprised? :-)
Eight years! That's a truly dedication to one of the best action games ever. I don't know why SEGA or someone else didn't already do the same thing, create a sequel using all power that is available now. Being an extreme fan of original SOR series I don't know how I missed such a huge thing, looks like it was around from about 2009 already. Yet it better to play that game then it's finished and polished.
The remake is absolutely wonderful! It doesn't seem like a amateur fun-project at all, on the contrary all assets looks like a professional quality, better than many commercial games. Music remastering is of wonderful quality. You should absolutely give it a try, it's free! The only sad thing it's not opensource in any way. But who knows, maybe in better future it will be?
It has been 8 years of work, but the final version is here, this is complete and ready for download, Surprised? :-)
Eight years! That's a truly dedication to one of the best action games ever. I don't know why SEGA or someone else didn't already do the same thing, create a sequel using all power that is available now. Being an extreme fan of original SOR series I don't know how I missed such a huge thing, looks like it was around from about 2009 already. Yet it better to play that game then it's finished and polished.
The remake is absolutely wonderful! It doesn't seem like a amateur fun-project at all, on the contrary all assets looks like a professional quality, better than many commercial games. Music remastering is of wonderful quality. You should absolutely give it a try, it's free! The only sad thing it's not opensource in any way. But who knows, maybe in better future it will be?
Apr 15, 2012
Digger.NET in development, part 5
Well, I extremely satysfied right now, since I've done complete main screen of my XNA port of a Digger Remastered. The currently main page looks like:
I'm impressed how easy it's for a complete gamedev noob (like me) to do things in XNA. So, original internal framerate for Digger is something like 15 frames per second. Question: how much it takes to set it in XNA game? Answer: one line, just add this to your main Game class:
This is especially evident if you look at the original C code, it's so complex. The graphics and drawing code is incredibly complex. I'm not going to blame the author, seems like he did much more complex job than I but this:
// original frame rate is 15 fps (67 ms per frame) this.TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 67);So-o-o nice! So nice I will count the XNA one of the best frameworks which comed from Microsoft (I'm hoping Microsoft will not slow down or stall the thing with it's new Metro-Shmetro and all the native stuff which it puhing quite intensively lately, IMHO).
This is especially evident if you look at the original C code, it's so complex. The graphics and drawing code is incredibly complex. I'm not going to blame the author, seems like he did much more complex job than I but this:
bool sprrdrwf[SPRITES+1]; bool sprrecf[SPRITES+1]; bool sprenf[SPRITES]; Sint4 sprch[SPRITES+1]; Uint3 *sprmov[SPRITES]; Sint4 sprx[SPRITES+1]; Sint4 spry[SPRITES+1]; Sint4 sprwid[SPRITES+1]; Sint4 sprhei[SPRITES+1]; Sint4 sprbwid[SPRITES]; Sint4 sprbhei[SPRITES]; Sint4 sprnch[SPRITES]; Sint4 sprnwid[SPRITES]; Sint4 sprnhei[SPRITES]; Sint4 sprnbwid[SPRITES]; Sint4 sprnbhei[SPRITES];is just nonsence. At least you can pack each x, y, wid, hei etc. coordinate like data in a structure with two fields. And this is just a tip of an iceberg. Consider this young fella from sprite.c:
void drawspr(Sint4 n,Sint4 x,Sint4 y) { Sint4 t1,t2,t3,t4; x&=-4; clearrdrwf(); setrdrwflgs(n); t1=sprx[n]; t2=spry[n]; t3=sprwid[n]; t4=sprhei[n]; sprx[n]=x; spry[n]=y; sprwid[n]=sprnwid[n]; sprhei[n]=sprnhei[n]; clearrecf(); setrdrwflgs(n); sprhei[n]=t4; sprwid[n]=t3; spry[n]=t2; sprx[n]=t1; sprrdrwf[n]=TRUE; putis(); sprenf[n]=TRUE; sprx[n]=x; spry[n]=y; sprch[n]=sprnch[n]; sprwid[n]=sprnwid[n]; sprhei[n]=sprnhei[n]; sprbwid[n]=sprnbwid[n]; sprbhei[n]=sprnbhei[n]; ggeti(sprx[n],spry[n],sprmov[n],sprwid[n],sprhei[n]); putims(); bcollides(n); }no comment (pun here!). How many global variables you can count here? Maybe you want to know that ggeti is? Actually it's a function pointer, to another function (which is actually quite an elegant solution to switch CGA and VGA graphics mode):
void vgageti(Sint4 x,Sint4 y,Uint3 *p,Sint4 w,Sint4 h) { Uint5 i; for (i=0;i<h*2;i++) if (i+y*2 < 400) farmemcpy( (char far*) (p + (Uint5) i*w*8l), back_bitmap_bits+ (Uint5) ((y*2l+i)*640l + x*2l) , w*8); }how many magic numbers you can count here? Developer suggests contacting him in case of any questions. But last modification date for source is year 2004. I feel it's little rude to notify person on his completely forgotten project. This is so sad he didn't leave enough comments then he could.
Apr 14, 2012
Digger.NET in development, part 4
This post could also be named: "Why is it a good habit to search for and read the docs" or "Why is it a good habit to comment your code".
The base source code of a Digger Remastered is a C Windows application which uses DirectX for graphics output. Due to the source evolution nature of this game (at least I think so), which was a DOS application before, variables naming is somewhat... short. No camel case also. And almost no comments in source code. I've downloaded latest source code for Windows as my starting point. I thought it will not be very hard to understand the code of this, rather simple, game. I've deciphered some part of a high level game code, but then I've approached a graphics code. This is the place there I have stuck a big time. Can you guess what this code does?
As you can see, all variables here, except for i are global. Also complicates things, you know. This was also frustrating because I didn't actually need most of the graphics code, which uses pixel-by-pixel drawing since I use real bitmap sprites for drawing. But because this code also tightly coupled (related) with other game logiŃ (collision detection for example) I need to understand it too.
Not so long ago, I've decided to look for another sources on the site, Java in particular, in hope it will help to understand the graphics code. However, the Java sources were useless, but I've also downloaded (for some unknown reason) old windows sources and voila, I've found some text files inside the zip! The description I found inside was invaluable:
void putis(void)
Redraw background images
quite unexpected from a name though, hmm. Considering there are tens of different obscure functions and global variables, and deciphering one of them can take hours, this file gonna save me big time (pun here!).
Strange thing though is, why not add this single line as a comment in source code file, just there it belongs, not in a big separate text file. Why? Why?! Why?!!
The base source code of a Digger Remastered is a C Windows application which uses DirectX for graphics output. Due to the source evolution nature of this game (at least I think so), which was a DOS application before, variables naming is somewhat... short. No camel case also. And almost no comments in source code. I've downloaded latest source code for Windows as my starting point. I thought it will not be very hard to understand the code of this, rather simple, game. I've deciphered some part of a high level game code, but then I've approached a graphics code. This is the place there I have stuck a big time. Can you guess what this code does?
void putis(void) { int i; for (i=0;i<SPRITES;i++) if (sprrdrwf[i]) gputi(sprx[i],spry[i],sprmov[i],sprwid[i],sprhei[i]); }
As you can see, all variables here, except for i are global. Also complicates things, you know. This was also frustrating because I didn't actually need most of the graphics code, which uses pixel-by-pixel drawing since I use real bitmap sprites for drawing. But because this code also tightly coupled (related) with other game logiŃ (collision detection for example) I need to understand it too.
Not so long ago, I've decided to look for another sources on the site, Java in particular, in hope it will help to understand the graphics code. However, the Java sources were useless, but I've also downloaded (for some unknown reason) old windows sources and voila, I've found some text files inside the zip! The description I found inside was invaluable:
void putis(void)
Redraw background images
quite unexpected from a name though, hmm. Considering there are tens of different obscure functions and global variables, and deciphering one of them can take hours, this file gonna save me big time (pun here!).
Strange thing though is, why not add this single line as a comment in source code file, just there it belongs, not in a big separate text file. Why? Why?! Why?!!
Apr 12, 2012
XNA tools 2D game developer should not miss
This article data (and much more) can now be found here. I find that blogger platform was not suited well for managing of this kind of list.
You may also find useful:
- XNA tutorinals beginner shouldn't miss
- XNA articles beginner should not miss
You may also find useful:
- XNA tutorinals beginner shouldn't miss
- XNA articles beginner should not miss
Why you should reinvent the wheel
Below, I will talk about game development specifically, but I think this can be applied to any type of development.
The main theme I want to concentrate on is: if you personally experienced problems which some "wheel" solves, then you will use it better and with more satisfaction.
Consider arrays for example. Do you remember very first time you really understand concept of arrays? Usually this is very close to the beginning of language study. But despite that, usefulness of arrays is immediately obvious. You dont need tens of variables to store multiple values, and of course cycle processing of this values is much easier, to say the least.
Now remember user defined functions. They also come early, but not so early as arrays. Functions benefits is not so obvious until your programs go beyond some 100 lines.
And then, pointers. Double linked-lists. Queue. Stack. All of that strange useless magic. Then classes arrived and OOP with that strange inheritance thing. Why do you need to block access to a structure field? Some of us were forced to all this stuff at university or college. But as time goes you begin to understand why all this exist.
There is, however, a different side of this. Many starting game developers, as I can see, for example, at gamedev.stackexchange.com tend to use heavily some rather complex frameworks for games. The problem is that unless you will create game without usage of some frameworks, unless you didn't try to solve problems which arise with you own hands, you can't quite understand even basic logic that stands behind framework, and can't use it effectively.
You don't use classes from the start. You don't use pointers and complex data structures from the start. Not even functions. You use variables and arrays. Then your code grows, you understand concept of a function. And so on, you use more advanced features, then you face problem and understand how that feature helps to solve it. Before that time, your usage of it would be wrong and unefficient. Similarly enough you don't start game development by creating WoW clone, you are making Tetris clone.
Of course there are exceptions. You don't write XNA youself. You don't write standard C library. But this are well built, long time tested, basic functionality tools from a major brand. They can be considered a part of a language. You don't write image manipulation library, it's not the core kwnoledge that drives your game. But you write your game editor, your game core and physics engine. Even if you fail, your experience will be invaluable.
The main theme I want to concentrate on is: if you personally experienced problems which some "wheel" solves, then you will use it better and with more satisfaction.
Consider arrays for example. Do you remember very first time you really understand concept of arrays? Usually this is very close to the beginning of language study. But despite that, usefulness of arrays is immediately obvious. You dont need tens of variables to store multiple values, and of course cycle processing of this values is much easier, to say the least.
Now remember user defined functions. They also come early, but not so early as arrays. Functions benefits is not so obvious until your programs go beyond some 100 lines.
And then, pointers. Double linked-lists. Queue. Stack. All of that strange useless magic. Then classes arrived and OOP with that strange inheritance thing. Why do you need to block access to a structure field? Some of us were forced to all this stuff at university or college. But as time goes you begin to understand why all this exist.
There is, however, a different side of this. Many starting game developers, as I can see, for example, at gamedev.stackexchange.com tend to use heavily some rather complex frameworks for games. The problem is that unless you will create game without usage of some frameworks, unless you didn't try to solve problems which arise with you own hands, you can't quite understand even basic logic that stands behind framework, and can't use it effectively.
You don't use classes from the start. You don't use pointers and complex data structures from the start. Not even functions. You use variables and arrays. Then your code grows, you understand concept of a function. And so on, you use more advanced features, then you face problem and understand how that feature helps to solve it. Before that time, your usage of it would be wrong and unefficient. Similarly enough you don't start game development by creating WoW clone, you are making Tetris clone.
Of course there are exceptions. You don't write XNA youself. You don't write standard C library. But this are well built, long time tested, basic functionality tools from a major brand. They can be considered a part of a language. You don't write image manipulation library, it's not the core kwnoledge that drives your game. But you write your game editor, your game core and physics engine. Even if you fail, your experience will be invaluable.
Apr 2, 2012
Conjurer: Reloaded
The Conjurer project which was my little playground for something related to game development, but which ultimately become a failure, will now hold something quite more useful. It will be my personal XNA Framework utilities library. For now it contains a KeyboardManager class which helps to manage keyboard input handling.
As you can expect, main user of this project will be (and is) Digger.NET project.
As you can expect, main user of this project will be (and is) Digger.NET project.
Subscribe to:
Posts (Atom)