Sunday, October 23, 2011

People are Jerks


From a python forum:

person 1: the permissions are okay, it is set on full control for the folders in question. still, the problem remains.
-----

person 2 (jerk): Is it your belief that anyone who uses your computer has full control? If so, what does having admin privileges mean? After considering those questions, once again think about the statement: your program is not you.
-----

person 1: okay i don't want to get into philosophical questions regarding who has control 
about what. i am trying to start learning python and i am already failing at the code i have posted. 




Often times you can find many programmers telling others what good questions are and bad questions. 
For instance, I have heard countless responses on online forums such as: 

"Why would you ask what the best method is? We can never know what is best. There are pros and cons to every option in programming. You will just have to try every method for your situation and then you will know which route to take in your problem."

What kind of attitude is this? It's terrible! Imagine if you were on a road trip and you stop at a gas station in a city. You then ask some stranger: 

"Where can I find the best Mexican food restaurant around here?" 

to which they reply:
"As is the nature of newcomers like you, your question is ambiguous. How do you expect me to know what the best Mexican food restaurant is for your situation? We can never even know what is best for ourselves, why would you ask me to know what is best for you?"

That (I hope) would never happen, but why does it happen all the time on the internet?



Wednesday, September 28, 2011

Rewriting (nearly) my whole game.

I ran into so many issues with my previous method of handling networking that I decided to rewrite my entire networking code to use twisted.protocols.amp (instead of pb). I only have like 3 months left till I have to submit my game to some competitions though so this is gonna be crazy. Im going to try to just get the basic gameplay mechanics working and try to polish that. Then I can work on other things such as RPG elements like weapons, more dynamic enemies, random map generation(which is super fun), and other cool things that would take too much time to do in the next three months. But hey, on the bright side I almost finished the song for the game :)

Short, Self Contained, Correct (Compilable), Example

http://sscce.org/

Those are some really good guidelines for creating a small example to show someone an issue you are having with some code. It helps the person helping you so that they don't have to go digging through a bunch of lame and stupid code that has nothing to do with anyone, ever.

Friday, August 5, 2011

Did I Mention I Got Hired As a Tester?

Here is the game i've been working on, It involves a bunch of mini games so the testing experience is... interesting.

http://www.ea.com/family-game-night-4

Cellular Automaton Simulation

I made a little cellular automaton demo. Its pretty cool and I plan on using it to generate the textures for terrains, like the black tiles could be a dirt tile, and the white tiles could be a grass  tile. I think It will create a really cool random terrain effect. It runs pretty slowly, but i think thats a python problem with looping through 1000000 tiles every iteration :). But in the demo i limited it to 3 FPS and its rendering it every frame but it can go quite a bit faster than that, I just set it to those values because i think its cool to watch.


I included a windows exe file (no pygame/python required!)


Cellular Automaton Simulation

How to get hired by an indie game developer.

How to get hired by an indie game developer

I love articles like this, especially how the are written by the people doing the hiring ;)

Its worth the read.

Tuesday, June 28, 2011

Possibly the most depressing photo ever.


Then again, maybe hes watching the greatest movie ever made with those goggles!


Just kidding... that image kind of makes me cringe.


This drawing was done by Eran Cantrell He has done some awesome stuff.

Friday, June 24, 2011

Setting up SCPlugin for Mac: Server certificate verification failed:

Ive been through trying to set up SCPlugin a few times now and its about time I post the fix that actually works. Hopefully people can find this easily and not have to go through what I went through.


The actual fix

Tuesday, June 21, 2011

Its Been Awhile.

So, School got out for summer, I went on a trip, and I got fed up with my multiplayer game. But today was the first time I have programmed something in like a month. Here's a super basic, really effective and dynamic item generator (for like an RPG or something). Its obviously not very fleshed out or anything (It took 20 minutes, what do you expect) but it is cool none the less. Check it out! Random Item Generator

Sunday, May 1, 2011

PyCon 2011: Getting the job: the do's and don'ts of landing a Python job

This is one of my favorite talks I have seen from PyCon 2011

It's really applicable to my life, and helps with a lot of the uneasiness of job interviews. I would recommend it to anyone and everyone. It really doesn't go into python specifically and it is in fact very broad in the sense that It would help with any kind of job interview.

Wednesday, April 27, 2011

Making Music

One of my favorite parts about developing video games is that I get to make art, music, and programming all by myself. I love all of those things, so video game is a perfect way to combine all of them.


But I've had some serious issues with making music lately.
The song I want to write is not the one that I end up making.


Summary of the last song I made:
Goal: 10+ minute ambient, electronic song. That can be looped and played as background music.
End Product: 6 minute progressive electronic song (good start) with a hardcore dubstep style drop at the end.


I mean, imo it sounds really good, its just not what im looking for.


I ,must be doing something wrong.

Thursday, April 21, 2011

Has anyone seen these errors before?

These errors keep popping up when ever I try to load images.


libpng warning: Incomplete compressed datastream in iCCP chunk
libpng warning: Profile size field missing from iCCP chunk


It looks like other people have had this error come up. But I cant find hardly anything relating to pygame or python.

Wednesday, April 20, 2011

Update on the Multiplayer game

Im going to try to post smaller posts more often instead of posting alot of content, really fast (and then getting burnt out, and not posting for a week or two) (which is what ive been doing, heh..)


Ive had alot of progress lately. The game no longer has (as bad of) lag issues.
This is because I am sending the objects velocity, instead of the position. It really helps a lot because instead of sending, for example, 200 object's positions, every frame (40 x a second). I only need to send the velocity of the object once, and the client will take care of the future physics updates. 


I also made it so that each client uses a delta time value in the physics updates. I get delta time by subtracting the previous frame's time from the current time. Something like:


Happens every frame:


import time # except this




previous_time = current_time # sets the previous time before we get the new current time
current_time = time.time() # get the current time
delta_time = current_time -= previous_time # get delta time


update_physics(delta_time)


I then use the delta_time in calculating current position of objects.
This means that, even if one client has a wooden computer, from 1980, that requires a refueling of coal every 30 minutes. It will still have (in most cases) the same display as the kid down the street using his dads new super duper, high tech, state of the art, mega 2000X computer. 
The point is, no matter the frame rate, the computers will have the same basic visual output.

Monday, April 4, 2011

AHHHHHH ITS WORKING@#$%@#%$^@%^!@&*&^%$#

When I realized it was working, This is how i felt




What was it that makes me feel like a kid who just got blastoise?


Funny you should ask..


I've spent all day working on my game, and at this point I can start up the server on my PC, start a client on my PC, which connects to the server. I can then move my character around and get everything displayed to the client HUD. 


BUT THATS NOT ALL.


I can also start up a client on my Mac, which i then connect to my PC server,
And the best part is?
Both the PC and the MAC client each have their own character which they can move around, and each client can see the other client's characters moving around also!!!


Note: there may be a number of subliminal key things which i mentioned here, that you may have missed.
In the interest of getting the reader (you) to a point of more understanding and awe inspired gratefulness, I will list the things you may have missed, and what they mean.


1) The server is running on a PC, and I was able to connect with a Mac client.
    This is great because it means my multiplayer software is cross platform. And there will be no issues with running the game from, well, pc to mac, or mac to pc. (a big plus) (thanks for this goes to twisted)


2) Each client can see the other clients characters
    This took a lot lot lot of thinking on how to do. But it ended up working. Basically, the game state is sent to all of the clients, so they all see the same game. Sounds easy, but, well, whatever...


3) The Mac client connected after the PC client
    This took forever to figure out how to do. Because when a new client joins, there are already tons of objects on the screen which the new client has no clue about 
so when the server says: hey client! update these (insert potentially big number here) objects, move them to this position! The client says: uh, I have no clue what those are! I wasn't around when those were made!)


So I fixed this by having the server send out the entire game state when a new client connects (which I had to organize, and package into useful stuff, then unpack on the client side, and use the info to get up to the same level as the server). Again, it sounds like a matter of: Oh, just do this... But. theres a lot more to it than it sounds.




Wrap up


Yeah thats pretty much it, I guess ill note that at this point the code is 1000+ lines, which is already one seventh of the code in Color Tower Defense. And all it does is moves a character around. Wait, thats just the mentality that I was saying don't have. Cause as I mentioned, It does a lot more than just move characters around. But anyways. Without the Network code and multiplayer, this would have taken < 100 lines of code to do. Big difference.




The Future is in the FUTURE


some good news is that I have a knowledge of how to send info back and forth between the clients and server. So at this point I can focus on adding features, as in more gameplay stuff. My next goal is to make it so each character can shoot projectiles, and the other characters have to dodge them, while shooting back! It could actually be fun.


Stay tuned...

Sunday, April 3, 2011

How To Meet The Girl of Your Dreams

(Foolproof)
http://i.imgur.com/qeNtz.png

Twisted Tutorials and Helpful Stuff..

I've been trying to get a multiplayer game working for awhile now, and during that time i have searched far and wide to find some half decent tutorials and other helpful stuff. I have talked with a lot of different people in hopes of getting some good help, and, while I have not found anything I would call really, really helpful, I have stumbled upon a few sites that have pointed me in the right direction.


Pygame Twisted Tutorial
http://ezide.com/games/writing-games.html
This guide does a great job of explaining how to use a MVC model to make games. Its really good and all, except on the part where it tries using twisted to make the game. In this aspect, its very close to garbage.
Regardless, this is the tutorial that i have been using mostly. I went through all of SJBrown's source code (the person who wrote the tutorial) desperately trying to make sense of what I was seeing. (Because he doesn't explain it very well in the tutorial) My goal was to look at his example until I knew how it worked well enough to implement it in my game. The source was nearly impossible to follow because he has the code split up into unorganized modules and other reasons (especially the parts where he is sending objects back and forth between the server and client, thats confusing). And it didn't help that he has a stupid map object that is integrated with the character's movement, or that his example game doesn't even work with multiple clients connected to the server (WHAT the HECK is that about? whats the point of using twisted if its only going to be a single player game?!?!?!) I ended up going through the source code line by line, copying it down using my own variables and values. 


Its been a long process but it has finally been working. There were alot of things i had to change 
(And i got mocked a few times on IRC because people would say stuff like: What? why do you need to know what that means? That code is terrible. If your doing it that way then your doing it wrong, do it this much more simple way... 
To which I would reply: Oh sorry, Im just trying to follow this tutorial and thats how he's doing it. I didn't write that code.)


if SJBrown ever reads this post:
Dont get me wrong, I'm thankful for what helpful info your tutorial has taught me. 


Anyways...


Game physics in a network game
http://gafferongames.com/game-physics/fix-your-timestep/
I have not got to a point in development where i will need to use this. But it is very helpful. And well written. Not specific to twisted


Crazy Russian Twisted Example
http://bytemuehle.de/Twisted%20Einführung/#grobe-struktur-eines-einfachen-twistedprogramms
This is a helpful example, very well structured and easy to see whats going on
note: it may not be russian, thats just a guess. I used google.translate to read the intro.


General Networking Development
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
This is professionally written, and really helpful, I would recommend it to EVERYONE. Its not really talking about twisted though.


Twisted Actual Game Example
http://bazaar.launchpad.net/~game-hackers/game/trunk/files/head:/
This is a real game that is in development, It is open source. I've looked through it for a little bit, but the networking code appears tightly integrated into the rest of the game. So at this point I have not taken the time to look through it and try to understand how it works. But I have talked with one owner of this game and he was a twisted pro, he knew what he was doing. 




This list Is the ones that are actually helpful. I've gone through a lot more tutorials than these. I have not really seen any ones that sort of "explain it all". But I have been able to figure out a lot using these. 




Update On My Game
At this point in my game, it is possible to connect multiple clients to the server. You can then control the character on the screen using the w,a,s,d keys. The next thing i'm working on is making it so multiple characters can be controlled by different people (so every person will have their own character, and each person playing can see everyone else's characters).


I also need to think of a name for the game.
At this point its project defender. But that was sort of because I couldn't think of anything better.


Have a nice day.



Saturday, April 2, 2011

Feeding the Blog

Sorry about the not posting in awhile...


Regional Science Fair
Lets just say the Regional science fair was, uh, fun?
yeah, it was fun. It was also a lot of other things.
I would call it surprising, unexpected, and tiring.


But, yeah I won 6 awards total.

§ BYU Central Utah Science and Engineering Fair computer science first place winner
§ 2nd place winner of the BYU CUSEF Symantec Software Scholarshop
§ Winner of the Stevens-Henager College 2011 $10,000 scholarship award
§ Winner of the BYU Dean’s Award
§ Winner of the Westminster College $4,000 scholarship award
§ Winner of the Intel Excellence in Computer Science Award

It was very fun, I got to go up on stage a bunch and do the whole bowing thing.
At one point, I was walking back to my seat (after receiving an award) and my name got called as I was about 5 feet away. So i gave my award to my dad and walked right back up. :)


My Next Game

I created a new google project page for my new multiplayer game
its code.google.com/p/projectdefender
I also set up subversion control (super confusing!) so you can browse the source code. As I have said before, I'm using Twisted for the networking. At this point, I have a decent understanding of how to send info back and forth between the client and server, The issue i'm trying to overcome at this point is just creating pygame sprite objects and controlling them using player input. Its been very frustrating, but It may just end up working.

Sunday, March 13, 2011

Things are looking good.

Scholastic Art and Writing Awards
On Thursday, I got a letter in the mail stating that I won a Regional Gold Medal In the Scholastic Art and Writing Awards! WHooooo! This was awesome, and also meant that I got to advance to the National judging level. Then, Last Friday(the day after) I was notified that I won a National Silver Medal in the Scholastic Art and Writing Awards in the Video Game category!@#!@#!@#!@#!!!@$!%$^&U#$^*!$#%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!. This is the contest that I talked about way back in January. And I am super excited about how it went. I guess I also get to go to a big awards ceremony in New York!

Summer Internships
I am trying to set up some summer internships and It looks pretty good so far. At this point I will have from one to three. So something should work out. One guy makes mobile phone games. Another programs servers (using python) and the last guy does some kind of thing with programming (I can't remember :S)
I think It will be a really good experience for me. And I'm excited about it!

My Game Server
As you may know, Ive been trying to get a server working for my next game. I've been having issues because I don't know how to use twisted. But this week I got a little closer. At this point, I can connect a client to the server. And the Client has a main loop which is run every frame with     
     
reactor.callLater((1 / self.FPS)self.loop)

Here is my client code so far. 

It's a lot farther than it was before, but at this point, the server and client are not actually sending anything back and forth. (I still need to figure that out)

If anyone knows If i'm doing this whole thing wrong (maybe i need to put everything from my Game class into the ClientProtocol class???) or other pointers, that would really help me out.

Pyweek
Pyweek is coming up in about 20 days. Im not currently going to be taking part in any projects. But I think I may want to do something for it. If anyone wants some help on their team, I would love to talk about it.


So thats all I can think of talking about. Have a nice day everybody!

Oh, Im also considering publishing some of my music on this blog. So that may happen..

Cya!

- Josh 

Sunday, March 6, 2011

Twisted for Multiplayer Game Development

First off, Twisted is a library that helps you make networking/online software. It can also be used to make multiplayer games.



So...
Im not feeling so good about what i've been able to accomplish lately. I really want to get started on my new multiplayer game but i've been running into so many issues with Twisted.

Its not that Twisted is bad, its just that I don't know how to use it.
I have been doing some research into it and I cant find any examples that use it in games. And it doesn't help that most of my time recently has been spent on school and work.
I think I am going to have to spend a few days to get it working. Its really not something that you can sit down for 20 minutes every day and work on. It takes a lot of time. And it also happens that I cannot work on any other part of my game until the multiplayer is all set up.

Im going to try to get twisted all figured out this week. I REALLY want to understand it.
My plan is to go around to some irc rooms and see if anyone will help me one on one to learn Twisted.

If anyone reading this knows how to use twisted to make games, I could really use your help!

Saturday, February 26, 2011

Making a Tutorial?

Ive been thinking about making some kind of tutorial for Color Tower Defense, Im not sure how it would work, or if it would even be a good idea. But what I have noticed, is that not very many people have played tower defense games before, and if they have, then they played something like one level of Bloons Tower Defense on addictingames.com

So I often find myself telling people how to play the game. And I could just make a tutorial and that would be good enough. But unfortunately, I have no clue how to do that, or if it would even be worth it.

Some ideas were to make some kind of video which can be played in game. It would just show off basic gameplay and have captions of whats going on. I could maybe enable tool tips in game. Like little arrows that point around and say "Click on this button to start a new wave!"

But really, I don't know if this would even be worth the time I would have to put in. So I just don't know.

Charter School Regional Science Fair

Science Fair
Thursday night was the big science fair that I have been planning for.  Ill just get the suspense out of the way and say that I was one of the 10% of people who now get to move on to the big regional science fair. The science fairs progress like this.
school fair > district fair (or in the case of charter schools, its the charter regional fair) > regional fair > national fair. 


My project was on how I used the Rapid Application Development model to develop my tower defense game. I knew I would not have any issues explaining my project to the judges since I have spent so much time on it, but I was pretty worried about my poster board and the book that goes with it. Im positive that out of the hundred or so in the room, mine was the only one without any color on it :) 


I also was the only computer science software project in the room, so that may have helped, even though they did not separate the judging based on categories.


Another thing was that out of everyone who judged me, none of them knew much about computer science, or programming at all. I think that may have been a good thing, because I was able to impress them with a whole area of engineering that none of them had a clue about.


Heres my basic presentation walkthrough:


Walkthrough
I would meet them, and ask if they had any experience with computer science, then I would show them a little bit of gameplay, and explain some of the features of my game. I would then walk through the RAD model, and show them how I used it to keep track of the new features I was adding. I then explained the project release, testing, and feedback methods that I used. I would then wrap up the presentation by explaining some issues that I faced, and how I was able to fix them. Then I would answer any questions they had, and I would be finished. 


More of the Science Fair
Each project was evaluated by three judges, and each judging took 10 minutes. Believe me, I could have gone a lot longer!


But anyways, It went really good! And I ended up being the last name that they called out of everyone. (there were high school, junior high, and elementary school students there) So that was really suspenseful for me. 


The next fair is at the end of March, so I have awhile to prepare my presentation better. This also means that I will not be able to work on my next game as much. Which I would really like to do. But obviously this science fair thing is way more important. 


In the Near Future
I will be releasing a bug fix version of Color Tower Defense in the next couple weeks here. The last few I've released have had serious issues due to my new game menu hierarchy. But they have mostly been fixed. Im also thinking about redrawing all of the background map tiles into more visually pleasing images instead of the basic green, tan, purple, etc. squares. I may also redraw the enemies. And while i'm at it, I might as well redraw all the images that my friends drew for me during the early stages of the game. Not only could I draw them better (no offense. The images have been a really big help!) But that would also allow me to be able to take more credit for the game, instead of having, well, you know..

Wednesday, February 23, 2011

Color Tower Defense 2.2

I just uploaded version 2.2 of the Source and Windows Exe.

Changes:

  • Source Works on Mac
  • Fixed incorrect map loading glitch
  • Minor balancing tweaks
  • Fixed Infinite loop depth
  • Fixed Infinite money bug
  • smaller download size
  • typo fix



I will get the Mac version up as soon as I can.
I would really appreciate any last minute testing before I display my game at a district science fair tomorrow.
Thanks!

Wednesday, February 16, 2011

Color Tower Defense 2.11

This update will be pretty much all bug fixes. Thanks to all the people who have tested Color Tower Defense 2.0 I have got a lot of feedback. Heres some of the issues that have showed up.


Incorrect map loading
Infinite money glitch *see bellow
Infinite game loop depth *see bellow
balancing issues


all of which will be fixed in the 2.11


-----*Infinite money glitch-----
I think this is pretty funny :) I never thought I would have this happen to me. Generally speaking, infinite money glitches are very sought after and result in a lot of google searches. It's because this is a glitch that people like. I mean, I think its cool! After you go play and experience everything the game has to offer, you search infinite money glitch and it opens up all this crazy new stuff.


this glitch happens if you sell a tower more than one time. Heres the code before I fixed the glitch:

elif event.key in [pygame.K_4, pygame.K_s]:
    if not placing_tower:
        if turret_selected:
            turret_selected.sell(player)
                game_map.set_collision(turret_selected.rect.center, 'open') # open the tile


And here is after I fixed the glitch






elif event.key in [pygame.K_4, pygame.K_s]:
    if not placing_tower:
        if turret_selected:
            turret_selected.sell(player)
            turret_selected = None
                game_map.set_collision(turret_selected.rect.center, 'open') # open the tile


As you can see, the only change is that turret_selected is set to none. Before I fixed it, You could basically sell the same tower multiple times. But obviously, it was a pretty easy fix.


-----*infinite game loop depth-----


this is how I used to set up the menu hierarchy


def start_game():
    def pick_map():


        def start_gameplay():


            # main loop stuff


            if user_wants_to_pick_map:
                pick_map()


            if user_wants_to_start_over:
                start_game()


        start_gameplay()
    pick_map()
start_game()


so theoretically, you could play the game, pick a new map, continue to play the game, pick a new map, continue to play the game, pick a new map... You get the idea.


The bottom line is, that this way worked, but It was a terrible way to do it. Here is an example of an error you could get.


-------------------------------------------------------------------



Traceback (most recent call last):
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 722, in <module>
    main()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 715, in main
    start_main_menu()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 713, in start_main_menu
    start_map_select()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 678, in start_map_select
    start_main_menu()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 713, in start_main_menu
    start_map_select()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 678, in start_map_select
    start_main_menu()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 713, in start_main_menu
    start_map_select()
  File "/Users/student/Desktop/Color Tower Defense/Scripts/Color Tower Defense.py", line 575, in start_map_select
    info_bar.display_info(build_turret_button.turret_type, 'upgrade info', False)
  File "/Users/student/Desktop/Color Tower Defense/Scripts/HUDs.py", line 69, in display_info
    if self.displaying_message == False: # if nothing is already displaying, then we can display something new
AttributeError: 'Info_Bar' object has no attribute 'displaying_message'


-------------------------------------------------------------------

This error message basically says:

*in a intelligent voice, robot like voice.
inside of the main game, inside of the main menu, inside of the map selection screen, inside of the main menu, inside of the map selection screen, inside of the main menu, inside of the map selection screen, there is an error on line 69 of the HUD module.

Haha, Thats really ridiculous.

Anyways the new way i'm doing it involves while loops


running_program = True
running_map_selection = True
running_main_loop = True

while running_program:
    while running_map_selection:
        while running_main_loop:
          
            #main loop stuff
            if user_wants_to_pick_map:
                running_main_loop = False
              
            if user_wants_to_start_over:
                running_main_loop = False
                running_map_selection = False
          
            if user_quits:





                running_main_loop = False
                running_map_selection = False
                running_program = False


It actually works very well, and was easy to change all my code over to fit this new model. Im happy with it.

ANYWAYS.

Color Tower Defense 2.11 is coming out soon. Stay tuned!

Thursday, February 10, 2011

Color Tower Defense 2.0 Bugs and other issues.

I would like to thank all the people who have play tested version 2.0 of Color Tower Defense. And the comments and feedback have been a big help! 

I have noticed two issues which ill talk a little bit about.

K the first version that has issues is the source download.
The way that I'm doing save files is that i pickle a class which has all of the
useful stats inside of it, such as an open_maps list which holds whether each map has been unlocked or not. It then saves that file into the Resources folder.
So the issue is that Im compressing the source files code into a zip folder using Windows XP. 
And someone once told me that Mac and Windows use different zip file formats (or something like that)
So apparently, when I open the source files on a Mac, the pickled files get all messed up. 

So to fix it i'm either going to use a different save file format, not include the save files with the source (and have the game generate them when it runs, or maybe some kind of other option that I have not thought of.


The second issue involves (im pretty sure) all versions of 2.0. Its come up a lot, from tons of people who have played the game. And so I hear that some of the maps are not loading correctly, It has the right character movement, and the correct tower placement, but the image is all messed up. 
Ive looked into it a little bit. And im pretty sure that the issue is caused by multiple background map images being in the same list. So when (in my main loop) it draws the map, I think its drawing every map in the group. And at random times when you start a new map, the new map will be drawn before the old map. 
Im pretty sure I did a terrible job of explaining that, so ill try to make it more simple.

Theres a list, that holds the map images. My main loop used the list to draw the maps to the screen, all of the maps get drawn in the order that they are arranged in the list. But sometimes, the new map will be placed in the wrong spot in the list. It should be placed on top of the others. But sometimes it gets put in  between other maps. Which means it gets drawn, but immediately it has another map drawn on top of it. So the map you see is is the wrong one.

Im happy with that explanation.

So, I thought I was clearing the map list every time I opened a new map. But For some reason its not working.


Thats all the bugs im aware of at the moment.
Ill get working on them and try to release a new version pretty soon here.

Tuesday, February 8, 2011

Multiplayer Tutorial

This is an article that I have been reading about making multiplayer games using python, pygame, and twisted.

Multiplayer games tutorial

It is really helpful, as far as setting up a MVC structure. Which stands for Model View Controller. It basically separates the input (keyboard, mouse,...) from the display from the game logic. This is so you can use events to send things back and forth over the network. Which is useful for multiplayer.

The issue with this tutorial is that It does a TERRIBLE job of explaining how to use the twisted modules. Instead of starting small, and starting with something like, sending basic text messages to your server, or maybe starting with one object. It gives you an example that allows users to reconnect, multiple connections to the same server, and tons of other way complex stuff that you cant learn unless you understand twisted, which the tutorial doesnt explain.

Im going to look for a new tutorial cause this one isnt doing a good job.

Sunday, February 6, 2011

Pages

I just figured out how to add pages to my blog.

It looks amazing now!!!!

Check out the downloads page and videos page at the top of the screen.

Color Tower Defense 2.0 has been uploaded!

Color Tower Defense 2.0 has been uploaded to
Our Downloads Page
and
Our Download Site

Downloads include python source files, Windows standalone Exe, and Mac standalone App.

you can also view our pygame page at
Pygame Project Page


Lots of updates here: multiple difficulty levels, better heads up displays, better balancing, some bug fixes, and now a total of 22 towers. 


New towers include science, volcano, slowing, and more! 


I also compiled it into a standalone App file. 


I still don't know if It runs correctly on Linux, I would really appreciate any help with testing. 

Friday, January 28, 2011

Color Tower Defense Ver 2.0

I submitted my game to the Scholastic Arts and Writing awards this afternoon. It was really crazy trying to set up the custom icon of the EXE file. It now looks like an awesome robot instead of the pygame python.

Its been awhile since i uploaded my code anywhere so I figured, why not right now.

So to start i will upload the windows EXE file. If you have windows then you can just download and run the game with (hopefully) no issues. :)

I would love to hear feedback on anything you notice, like, hate, whatever.

My plans at this point are to upload an exe, app, and the source. I will then link a bunch of sites to it and I will work on my other game (which I will talk about later) (Im really excited about the idea)

Then I will sit back and get feedback from who ever I can.

all of the work I do on the game will be fixing stuff, making things better, (that is to say that i wont be adding very many new features)

Once I have done enough fixing up and I am satisfied, I will upload a final version of the game and BE DONE!!!!!!

I guess i could talk about why im excited to be done.

So, the only reason I... Well, How about I start like this:
I don't like my tower defense game. And don't take that the wrong way. I like that I made it. And i am very proud of It and all the hard work that I put into it. Its just that I could not see myself sitting down and playing Color Tower Defense for hours on end. I just dont like it that much. Its really cool, and has some unique ideas, but Its just not as much fun to play it as it would be to play other games (like League of Legends)

So, the only reason I am working on it is so that i can have a finished product that I can show to people. It really shows that I was able to accomplish something, and be dedicated to it. Im not making it because I think its fun to play. Its more for being able to have something to actually, have. Sort of like a diploma I would say. Getting the diploma is not what makes you smart. Its everything that leads up to the diploma that does that. The diploma is just a award saying that you learned stuff. Sortof like my game. I will use It to show people what i can do.

So the thing is, my next game, is going to be fun.

thats my main goal. Is to design a game that I would sit down and play for hours at a time.

Not cause I have to.

Just for fun.

Plus its a freaking cool idea.

But I will talk about that later :)

Thursday, January 20, 2011

RED BULL

IGF student winners

The IGF announced the winners of the student competition. All of the games are amazing and super inspiring as far as what i would want to do for further games.




FRACT - Indie Adventure Game from Richard Flanagan on Vimeo.


GLiD gameplay from GLiD on Vimeo.










Toys from Christoffer Hedborg on Vimeo.

Scholastic Art and Writing Awards

Im entering my game into the video game competition of the Scholastic Art and Writing Awards. The deadline is January 28 which is coming up pretty fast. And I have stuff that needs to be done.

Heres my list of things left to do.

ART

things that need art:

    Freeze
    Hydro
    Hydro 2
    Pulse Beam
    Gaussian

1

balancing
custom exe icon - (use a resource editor)

2
different variety of enemies (different colors, could help with balancing)

3

cant hit enemies off screen
in game sounds


Ive added alot recently. Things like new towers, an arrow that says which way the enemies travel, heres my whole planner.





PRIORITY 1- Urgent!
    things that need art:

    Slow
    Freeze
    Hydro
    Hydro 2
    Pulse Beam
    Gaussian
  
        -----
    rename Hydro DEW to DEW and Voltaic arc to Hydro DEW
    give homing II a name!
    balancing (not too hard but still a challenge, no "best" way to play) ALWAYS CURRENT
    EXE creation
        custom icon - use a resource editor CURRENT

    make rotation bool FIXED
    package resources inside of the exe/installer (is this possible???)(not the best way[aClam]) CANCELED
    make difficulty select screen FIXED
    switch over to os.path.join FIXED
    better bee towers (more attack) FIXED
    handle all maps completed (game won) FIXED
    load game menu buttons(delete/save file buttons) FIXED
    scaling (making new basic towers cost more after bought/ making enemies exponentially increase difficuilty) FIXED
    handle single map completed (map complete screen) -FIXED
    save game function (auto) FIXED
    load game function displays after main menu FIXED
  
PRIORITY 2- Needs
    different variety of enemies (colors, could help with balancing)
    make slows shoot at front of line
  
    know which direction the enemies come from (arrow maybe) FIXED
    tower replacement mode CANCELED
    tech tower paths FIXED
    orbital shots respawn time -FIXED
    fix delete file button FIXED
    change pygame window header text FIXED
    beam targeting type FIXED
    info box displays not enough money/ other errors...  FIXED
    hotkeys FIXED
    fade out and into game FIXED
    fly tower image FIXED
    fix in game menu buttons FIXED
    fix pause screen image FIXED
    towers more spread out in tower paths (redo paths? too little in nature) -FIXED
    shrink tower placement info box FIXED
    orbital shots auto destruct after orbital is destroyed FIXED
    orbital shots maximun number FIXED
    orbital shots range issues FIXED
    raise shot kill boarders (homing disapear FIXED
    get rid of prints FIXED
    hotkeys FIXED
    new homingII image (just more flashy homingI) FIXED

PRIORITY 3- Would be nice
    cant hit enemies off screen
    in game sounds CURRENT
    make map.draw, HUDs.draw go faster (performace speed)

    new shot colors - FIXED
    rotate towers towards target - FIXED
    toggle sound button (ON/OFF) - FIXED
    center and crop all of the tower images FIXED
    flamethrower tower - FIXED
    change wave font - FIXED
    fix in game buttons to be python generated instead of photoshop images -FIXED
    fix while loop lag in mad_cloud_games startup FIXED
    nicer bee tower image (outline/shading?) -Tyler/Chris FIXED
    machine gun tower shoots faster, weaker, and more inaccurate FIXED
    change question marks in select map menu to locks - CANCELED
    better image rotation http://www.leptonica.com/rotation.html - CANCELED


As you can see, theres alot of stuff that got fixed, Its amazing how much keeping track of your work can help motivate you and make you realize how far you've come.


Since my recent entry into the IGF, I really doubt that this Scholastic Art and Writing Awards is going to be as hard to submit as that. I had to write a huge description, make a video, and a ton of other things. I don't think the Scholastic is going to be as hard core as that.