Skip to main content

Python PyGame Tower Defence - 0.8.0

A TD implemented in python and pygame.


Austin Morgan
(duckfin)
I'm closing the gap to Beta status. I'll be giving this project the Beta tag when it hits version 0.9. I've got a lot of work to go before it gets there, but the game is already quite playable. The basics are typical to Tower Defense games all over.

There are only seven maps thus far, and only three playable. I have not put great effort into balancing them yet, as things change constantly. That said, I played through all of them before releasing this and found them to be fairly spot-on in difficulty, if a bit lacking in variety. Balance will not be a top priority until the Beta, version 0.9.

The art is nowhere close to tops and there is no sound whatsoever. I am neither an artist nor musician. If anyone would like to contribute either, I would happily give credit for your work.

Comments are welcome and encouraged!

Changes

It has come to my attention that I did not balance the maps correctly after these new updates! I will get a fixed release out soon!
  • Added new Archer tower art.
  • Properly implemented the "CostMod" variables.
  • Changed the player levelup system: Player abilities are now determined by the maps they have completed, and the rewards those maps give (see Rewards.py).
  • Save/Load functions, as well as the Player class have been updated for this.
  • Simplified the "player.txt" file as a result.
  • Each map also has a related function in Rewards.py. When loading a player.txt file, each map that player has completed will run its related function from Rewards.py, granting bonuses or new abilities to the player.
  • Changed the completedMaps variable to a set, so multiple wins on the same map will not give multiple bonuses.
  • Modified the maps to be slightly more interesting.
  • Does not save on each new wave, now only saves at the completion of a map.
  • Melded the tower's sell function into "TowerAbilities", so that it may be granted from completing the "Simple" map.
  • As Scores are no longer used, removed all references to them from the code.
  • Removed PlayerUpgradeMenu.py and references.
  • Removed textbox.py. There should be no references.
  • Removed abilities.py and references.
  • Removed functions "addCR" and "addHP" from player class.
  • Added text at the top of the screen telling players to press 'N' to send the next wave.
  • Adjusted the base stats for the two base towers. Both are now the same price, with the Fighter tower doing higher damage at a slower rate and the Archer tower doing low damage at a medium rate with a large range.
  • Added an armored enemy type: "Armor".
  • Added new tower: "Mage". Has high hit rate, average damage, yet very low range.
  • Changed Icon creation so it is a function from player.modDict['towerAccess'], thus allowing giving new towers for winning maps.
  • Corrected some code to allow for correct displaying of tower ranges.
  • Added new Fighter tower art.
  • Added an alpha'd white layer underneath tower images, as they are getting hard to see.
  • TODO: Range is not working correctly!!!
  • Range correctly working now.
  • Got rid of Enemy Types, allowing finer-grained control in mapproperties.txt.
  • Changed out the enemy's path tiles. While the previous looked a bit better, this simplifies path-crossing.
  • Level3 implemented.
  • Changed some tower ability names and filenames.
  • Changed tower abilities so most of them can only be bought once-per-tower. In other words, it's now worthwhile for different maps to grant similar abilities. Note that granting the SAME ability will not do any good.
  • Removed options.txt and references in code. The only option that was even active was the targetline option. It is now hardcoded as active.
  • Removed quite a few unused files from the backgroundimgs folder.

Links

Home Page
https://sourceforge.net/projects/ppgtd/
Source
http://sourceforge.net/projects/ppgtd/files/src080.zip/download

Releases

Python PyGame Tower Defence 0.8.0 — 10 Mar, 2012

Python PyGame Tower Defence 0.8.1 — 14 Apr, 2012

Python PyGame Tower Defence 0.8.5 — 18 Nov, 2012

Python PyGame Tower Defence 0.8.3 — 15 Jun, 2012

Python PyGame Tower Defence 0.5.2 — 25 Feb, 2010

Python PyGame Tower Defence 0.2.4 — 7 Oct, 2009

Python PyGame Tower Defence 0.3.5 — 14 Oct, 2009

Python PyGame Tower Defence 0.2.1 — 6 Oct, 2009

Python PyGame Tower Defence 0.3.4 — 13 Oct, 2009

Python PyGame Tower Defence 0.3.2 — 12 Oct, 2009

Python PyGame Tower Defence 0.2.6 — 8 Oct, 2009

Python PyGame Tower Defence 0.3.0 — 11 Oct, 2009

Python PyGame Tower Defence 0.2.2 — 6 Oct, 2009

Python PyGame Tower Defence 0.5.7 — 1 Apr, 2010

Python PyGame Tower Defence 0.5.0 — 21 Feb, 2010

Python PyGame Tower Defence 0.5.1 — 25 Feb, 2010

Python PyGame Tower Defence 0.7.7 — 28 Jan, 2011

Python PyGame Tower Defence 0.7.5 — 9 Jan, 2011

Python PyGame Tower Defence 0.7.6 — 13 Jan, 2011

Python PyGame Tower Defence 0.5.6 — 14 Mar, 2010

Python PyGame Tower Defence 0.5.5 — 11 Mar, 2010

Python PyGame Tower Defence 0.5.3 — 2 Mar, 2010

Python PyGame Tower Defence 0.5.4 — 9 Mar, 2010

Python PyGame Tower Defence 0.8.6 — 17 Dec, 2012

Python PyGame Tower Defence 0.8.7 — 27 Aug, 2013

Pygame.org account Comments

  • Bemoniri 2012-01-06 14:21:55

    is there a way to win?:d

    James Lu 2012-06-17 21:56:07

    me too

  • Dylan Raub 2012-06-16 15:14:33

    Good to see you are still working on this! Good on ya, mate :D

  • James Lu 2012-06-17 21:55:41

    i'll upload my music soon
    when i get on win7...
    win 8 i can't do it, i secured it.

  • Steve 2012-06-19 02:20:24

    Rewards.py is missing from the latest build... I can't get it to run even if I grab Rewards.py from an older build though... will have a tinker with it and see if I can figure out why not...

    Steve 2012-06-19 02:26:24

     Got it running, that was my fault... but Rewards.py is def. missing

  • Austin 2012-06-19 02:26:58

    Thanks for the support, Dylan!

    Steve, Rewards.py isn't used in version 0.8.3. I replaced that whole mess with the Player Upgrade Screen, accessed by right-clicking on the XP Bar. If you're getting an import error, just remove the "import Random" line near the top of localdefs.py. I think that's the only one I missed.

    Thanks for all the feedback, guys!

  • A faggot 2012-07-09 12:43:53

    cool

  • sipiatti 2012-07-10 08:08:34

    ImportError: No module named Rewards
    It seems one file missed from the zipball?

  • Mich Nannings 2012-11-27 14:49:54

    it works nice, didnt find any bugs

  • wcb98 2013-10-08 01:30:24

    Great Game, but can you include python 3 builds?