g++ triangle.cpp ... -lglew32 -lopengl32
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x7): undefined reference to `__imp____glewDeleteProgram'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x27): undefined reference to `__imp____glewUseProgram'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x69): undefined reference to `__imp____glewEnableVertexAttribArray'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x90): undefined reference to `__imp____glewVertexAttribPointer'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0xc7): undefined reference to `__imp____glewDisableVertexAttribArray'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0xff): undefined reference to `__imp____glewCreateShader'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x11d): undefined reference to `__imp____glewShaderSource'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x131): undefined reference to `__imp____glewCompileShader'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x143): undefined reference to `__imp____glewGetShaderiv'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x18b): undefined reference to `__imp____glewCreateShader'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x1a9): undefined reference to `__imp____glewShaderSource'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x1bd): undefined reference to `__imp____glewCompileShader'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x1cf): undefined reference to `__imp____glewGetShaderiv'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x217): undefined reference to `__imp____glewCreateProgram'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x225): undefined reference to `__imp____glewAttachShader'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x23d): undefined reference to `__imp____glewAttachShader'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x255): undefined reference to `__imp____glewLinkProgram'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x26a): undefined reference to `__imp____glewGetProgramiv'
/tmp/cc2DLE4T.o:triangle.cpp:(.text+0x2ba): undefined reference to `__imp____glewGetAttribLocation'
collect2: ld returned 1 exit status
Does that look like anything to you? Yeah. Me neither. In honor of that fact, this article is intended to be understandable enough to be interesting and readable for even an inexperienced non-programmer type. However, it will also provide some very useful information which may save from grief someone else who is attempting the same thing as I just have. Therefore, I will try to provide as many useful links as possible.
As an independent developer, I tend to pride myself on my ability to remain open about the development of my projects, but sometimes it is hard to admit the truth. Either because I blame myself and feel lazy, or because I just don’t want to disappoint anyone. The realities of game development can be a lot less clear cut and pretty as some of the final results. There is honestly no medium that is harder to produce a complete work in.
I submitted Duet to the Independent Games Festival late last year. I was unfortunately not named among the excellent finalists. However, it did bring me some surprising attention, including an article on IndieGames.com. All this excitement from the outside has made it painfully apparent how slow my progress is. I haven’t even touched the code for the game in probably 3 months or so. So I feel that I should be honest with everyone about what I have been doing with the project: Nothing, at the moment.
Am I giving up on Duet? Definitely not. I believe that it is the most important game that I have worked on in my life. However, there are some difficulties which have arisen in the development which have made working on the project tiresome. Tiffany, Duet’s artist, was my fiancé at the time of her entry into the team. Now we are separated, and that makes collaboration difficult to impossible, due to the emotions involved. It is probably never advisable to build a work relationship atop a personal one.
I am doing a ground-up reimplementation of the gameplay from the original Game Maker prototype to my custom C++ and OpenGL engine. The port was envisioned as a way to achieve a more complex and modern art direction than what is possible in Game Maker. Therefore, I find it hard to be motivated when I do not have an artist working with me. I have been putting the project on hold until I could work things out with Tiffany. Now it seems clear that that is not going to happen, so I need to find another artist who is right for the job.
As you all know, life is expensive and game development is equally so. Games take a long time to develop, and progress can be slow enough when you work on it full time. Part-time progress may be enough to get Duet done, but even still, I lack the funds to pay an artist a competitive salary. So really the best I can offer anyone is a share of the final profits, after all the bills are paid of course.
Anyway, all of these factors have conspired to put Duet in a very tenuous position in it’s development. Progress is not happening, but I will inform you all as soon as I have anything new to show.
If you think you are what I’m looking for and are interested in helping make Duet look more like it plays, then you can drop me a line here, @mvandevander on twitter or on the Facebook page for the game. Please have examples of your work.
There is now a brief gameplay overview of Duet on YouTube.
Keep in mind, the footage is from an incomplete prototype version, and has pretty much zero artwork. This essentially a less spoilery version of the pitch I submitted to IndieFund earlier this year. It also should be the first footage that you will have seen of the game, period. So that’s pretty cool, right?
psst…There may or may not be some media coverage of Duet soon. Keep your eyes peeled.
It’s so easy to get attached to a project when you work on it for a long time. I’ve already been looking at Duet for a year. Despite that, for the past six months or so I haven’t made much progress. This is partly due to laziness and working a full time job. Staring closely at what you are doing can make it seem so much bigger than it really is.
The fact is that Duet is a small game. If I’m being realistic, it probably won’t change the world; it probably won’t change much of anything. But I’ve become so intimately close with the project that it has grown an importance to me that isn’t really due. I’ve created an abstract idea of what Duet is, and it seems imperative that I must create that. I can feel the importance of what I’m doing, and I find that paralyzing.
Continue reading “Laugh a little. Seriously.”
I suppose it is unrealistic to suggest that performance is never an issue when creating a video game. Since the better a game performs, the more graphical tricks you can cram up your games proverbial sleeves. But with the speed of modern computers, 2D games tend to not require much optimization. And as they primarily use tile-based graphics, it is relatively trivial to determine which tiles in the level are on screen (and therefore should be drawn), and which are not.
However, there are some newer 2D games, such as Braid, or Aquaria which use a entirely different method for their graphics which is not tile-based, but instead uses images which can be repeated positioned, rotated, and scaled arbitrarily to build a level. These images are rendered to the screen using modern 3D graphics hardware, which—being designed for 3D games—is rather fast for this application. Even still, there can be quite a large number of these images building up a level, so it is useful to devise an accurate and speedy method for determining which objects are on screen, and which are not. Continue reading “Culling”
The game that I am making currently is about cooperation. So what exactly does that mean? It means that every mechanic, every puzzle, and even every piece of art must be scrutinized to determine if it is core to this concept.
The process by which I create new mechanics for the game goes something like this:
Idea – From somewhere, either through playing the game, or from other games or other media, get a possible idea for a game mechanic.
Mentally Prototype – Imagine how the idea would affect the game. For some ideas, this is very easy. For instance, if the element has already been in another game. For others, I may have to skip mental prototyping, since the idea cannot be easily imagined.
Mentally Check for “Core-ness” – An interesting idea that does not fit with the games core theme is not worth implementing. For my game, the core theme is cooperation. In life, people like to establish relationships with people who have strengths where they themselves are weak. (In addition to common interests and similar experiences) Based on this aspect of human relationships, the players in my game must always have different abilities. Usually the bad ideas are those which do not create a give/take relationship between the players. Bad ideas are those do not create interdependence, but instead spur self-centered behavior.
Prototype – If the idea that I have cannot be discarded through mental prototyping, and seems like it may fit in the core of the game. Then I program it in, in the simplest way possible. Usually creating a bunch of dirty code. (But that’s okay, if it’s a bad idea, it’s a waste to write clean code)
Test – I try the mechanic out in many different situations, and in combination with existing mechanics. If the new mechanic creates any interesting puzzles that I couldn’t imagine when I first thought of the mechanic, then it is a candidate for the final game.
But how do I decide which things are interesting enough to make it in the game? That is certainly a tough problem, and there are many solutions. The simplest solution is to include everything that might be interesting. However, for my game, I have some fundamental guiding principles. I believe that the player of my game is an intelligent person, and should be treated as such. They are not stupid, and will be able to solve any of the puzzles that I can create for them, without breaking them down into simpler elements. I also believe that this player’s time is valuable to them, and I should respect their time, and not waste it. So therefore, I should never put filler into the game by repeating ideas that I have already explored.
Based on these principles, I will remove any puzzles which either waste a lot of player time on execution, or have very obvious solutions and may only be different than a previous puzzle in insignificant ways.
Even still, I struggle with this game every day. Sometimes I have to ask myself if the entire game is not just a waste of time for the player. It is certainly possible. But I am a game designer, and I want to make games, not incomplete products. So it is better to ship a game that I found interesting, even if no-one else will, than it is to not ship a game. As the Duct Tape Programmer says, “Shipping is a feature. A really important feature. Your product must have it.”
So time marches on…and there is much work to be done.
Well, I haven’t forgotten, and I will continue immediately with more movie review of 2009! Yeah, that doesn’t sound as cool now that it’s February, but still. It’s a fun exercise for me. Before I start however, I feel the need to give some update about the status of Fij. As is, I’ve been secretive to the point of misleading someone to think that I’m not even working on it.
Things are going rather well with the game. The game itself is up and running, although the features are quite minimal at the moment. I may or may not have a video soon. I’d like to have something more interesting looking before I show it off. The editor and the game have split off developmentally, so that I can continue work without having a huge mess of code that’s unrelated to the game. Although it would be nice to have a one button game-test inside of the editor. I feel that I’ve made the best decision for the moment. The game engine itself is designed to hopefully be the start of something I can reuse on more projects. Although I haven’t gone overboard on making it reusable. The important thing is to complete this game, after that, if I have some pluggable elements for the next one, then that’s just an extra bonus. I’m also in the process of looking for music that suits the themes of the game. It’s a bit difficult though, as I need to find either royalty-free music, or pay-licensed music. Of course, I could write my own music, and I may still consider that option if I can’t find anything better.
Now, on to some more reviews:
Not doing much right now, just putting this up from a public computer. About to go to my Old Testament class, which is the most sleep-inducing class of my school week. Unfortunately I’m already tired, so this is not going to be so good.
I’m currently mulling over some ideas for my next programming project. My goal is to keep myself working on making game projects so that I can actually be a developer. Rather than sitting around hoping that I’ll “be a game developer one day,” I figure I should just jump in and start completing projects. So far I’ve been making pretty good headway. I just don’t know what exactly I’m going to do next.
I’ve got some ideas for tools to make my big project (Fij, of course,) but I think it might be better of me to stick to actual game projects that are quite small and should only take about a week of work to implement. (barring any serious bugs, like the memory leak issue with my Pong clone) The main reason that I sort of feel this push as a necessary thing is that I want to learn game development, not just programming. And that means I need to learn as much as possible how to design and manage the programming and development of my projects until they are completed.
So, whilst doing other random things later today, I’ll hopefully try to mull for some ideas deep inside my brain.
Either that or I’ll just end up writing a space invaders clone.
Yeah, well I’ve been kinda ignoring this blog for maybe a little bit too long now. I haven’t even posted on it in probably 2 weeks or something. I’ve been gone on trips to…well basically all over the place. I went up to Washington D.C. two weeks ago for the national history day competition. I was competing in the category of group documentary. I didn’t even make the finals but I guess it was better for me to go and try/see what happens than to just say screw it…well anyways. We went to New York and Gettysburg and walked all around D.C. and I hurt my feets with all the walking… But eventually I returned home for a much needed rest.
Only to go on ANOTHER trip Continue reading “School trips and stuff…”