Ecliss Entertainment

Hey there, this is my first PyWeek and my second game jam after LD #23. I'm looking forward to making something a bit more ambitious!

Awards

Give this entry an award

Diary Entries

Ethical Differences - Day 1

I'll be cross-posting these journals to both my own blog, which badly needs the content, and the PyWeek web site.

I was busy most of the evening, so I didn't plan on getting much done tonight after the announcement - just some basic planning, or in other words, the content of this blog post. As the small number of themes in the voting this time gave me a chance to come up with some ideas ahead of time, I already had the essence of a game well in mind. I've been playing an online card game quite a bit lately - though I'd rather not mention which one - and I thought mad science would express itself perfectly in a similar strategy game where one constructs 'cards', or rather machines, on the fly. Perhaps you'll recognize the inspiration, or perhaps I'll put enough of a spin on things to make it gentlemanly theft, not boorish borrowing.

The game will take place in a series of rounds in which both players construct machines beforehand and place them upon their respective fields. Here's a mockup of the field layout:
 

 


Machines can be placed in slots. Slots Alpha and Beta are the front line and will protect the slots behind them from being directly targeted, while Slots Delta, Gamma and Epsilon are more secure but have the disadvantage of having to pass power through to Alpha and Beta. The goal of the game is to disable the other player's generator.

The effectiveness of machines is limited by <b>power flow</b>. In addition to all all of one's machines being limited by the total sum of power the generator can produce, individual machines are limited by the power supply and demand of their components.

Each machine is built upon a base, which draws a small amount of power itself and determines the speed, power supply, and lifetime of that machine. The speed determines the order in which machines take effect during a round, the power supply limits the components that can be attached, and the lifetime determines how many rounds it will last if not destroyed.

Example bases are:

N0F1-NG Special Component Housing - Power Draw 1, Speed 5, Lifetime Unlimited, Power Supply 5
1SHOT Temporary Mount Point - Power Draw 0, Speed 10, Lifetime 1, Power Supply 3
HVDU-T Advanced Frame - Power Draw 1, Speed 2, Lifetime Unlimited, Power Supply 7 
EC0 High-Efficiency Chassis - Power Draw 0, Speed 4, Lifetime Unlimited, Power Supply 4

Components may fall into the categories of attack, defense or utility and determine the effect(s) of a machine. A defense component is all but necessary, as without one a machine will be destroyed if it takes any damage whatsoever. Some example components are:

Z4PPR High-Energy Laser - Power Draw 2. Deals 3 damage to a machine in an opposite enemy Slot.
SPRKR Tesla Coil - Power Draw 4. Deals 1 damage to a machine in a random enemy Slot.
BR1CK Armor Plating - Power Draw 0. Absorbs 6 damage throughout its existence.
A3GIS Shield Generator - Power Draw 1. Absorbs 4 damage; capacity regenerates after every round.
H4LT EMP Emitter - Power Draw 3. Prevents a machine in an opposing enemy Slot from acting this round. 
3RS Salvager - Power Draw 2. Sends a component from the junkyard back to your components bin.

To explain the above, in typical card game terms, the components bin is your deck- where you draw from each turn to keep your hand full- and the junkyard is your graveyard- where parts of machines go after they are destroyed. I'm thinking hand size will be 10 and the total components available to you will be 60. Still considering whether to have bases and components be drawn separately, so that you always have a base when you need one - I'll probably playtest both before deciding.

I think that's most of the basic gameplay laid out. I'm going to tentatively call the game "Ethical Differences", and have a story in mind inspired by Stanislaw Lem's The Cyberiad, but for this story is definitely way down there at "if I have time to spare" priority.

I'll probably go ahead and start prototyping tomorrow - I was planning to tackle art and music beforehand, but this would be playable enough even with crude placeholders, so there's no need to work on aesthetics first. I guess I'll be using Python 2.7 and PyGame so that nobody has any trouble running my entry. I wanted to be on the cutting edge with pysfml2, but I can't even get it to function on Windows.

Good luck with your own games!

1 comment

Ethical Differences - Day 2

So this morning I had the revelation that not only is it unnecessary to consider aesthetics at this stage, my game won't even fundamentally require a GUI. I can implement all the logic and playtest the game just using a text display. Prototyping couldn't get any easier.

I promptly wasted the rest of the day on other things, few of them productive. Hey, it's the weekend.

In the evening I buckled down and got some basics in place, though - creating an object hierarchy for fields, slots and parts, as well as reading the part data out of a CSV file and allowing machines to be built from them. None of the actual game is there yet, but this gets some of the dull coding over with. Tomorrow I will have to get more done, but after Ludum Dare, I'm not really feeling the time pressure.

Since I'll try to post a screenshot daily, behold this unimpressive one:

Add a comment

Ethical Differences - Day 3

More foundations laid, nothing much to show. Power flow is in place, and I can copy the same methods to propagate damage. Did a bit of refactoring as well - for ease of implementation generators are now internally treated as a type of Base placed in "Slot Omega", which would make it pretty easy to add a type of component that attaches to them, perhaps repairing damage or boosting power output. That can wait, however.

Also switched gears a bit in the afternoon and did some prep work for music. I was lacking a good set of samples, now I'm not.

No real sense in posting a screenshot, I suppose. I think on the whole I'm going to lower my goal for this challenge from "produce something impressive" to "produce something playable." Lingering doubts about whether this idea will prove fun enough that it's worth putting a great deal of effort into seem to be sapping my motivation, so best not to work too hard, and satisfy the perfectionist in me with the option that if this prototype is adequately entertaining I can create an improved version once PyWeek is over.

"Playable" doesn't preclude the possibility of the interface remaining text-based, but I'll try to put together a rudimentary GUI. Will need to use PyGame for the music anyway.

1 comment

Ethical Differences - Day 4

Implement a couple features each day, and I'll get somewhere eventually. Maybe to a GUI tomorrow, if I'm productive.



Also started making some music, but it isn't really worth showing off yet. It'd be a bother anyway, you'd need to download a MOD player if you don't have one.

Add a comment

Ethical Differences - Day 5

Still no graphics, but one can have a decent battle now:



Before I wrap up for today I should probably make sure destroyed components get removed from the action queue, though.

I thought up a simple graphical style that would suit the game (an imitation of blueprints), so I will begin working on that tomorrow. I'm not sure I'll implement the card game mechanics, so this may end up more of a toy than a game. Well, it did spawn some ideas I'd definitely like to work on past PyWeek, I'd just like to think them through rather than rush to put them in a contest entry.

48-hour compos suit me better, it seems. Either that or I just need to plan things out better in advance (and stick to those plans.)

Add a comment

Dropping out

After sleeping on it, I've decided to gracefully retreat from the challenge. I could spend the remaining time either attempting to wrangle features essential to actually make my game a game, like enemy AI, into my spaghetti code or I could spend it on putting an usable GUI over top. I don't want that to be an "or" choice, especially when I'm tempted to just toss the current code out and redesign it from scratch.

In a sense, this is because I actually like the idea I had enough that I really don't want to rush out a terrible implementation of it to meet the time limit, so consider goal 5 accomplished. I'd like to thank everyone involved in running pyweek for the inspiration.

I commend those who are sticking it through, unlike me, and look forward to trying the other entries (if I'm allowed to after backing out.)

3 comments