About ashdnazg

Entries

 
Ludum Dare 35
 
Ludum Dare 34
 
Ludum Dare 30
 
Ludum Dare 29
 
Ludum Dare 27
 
Ludum Dare 26

ashdnazg's Trophies

ashdnazg's Archive

It’s crazier with every passing moment :D

Posted by
Sunday, August 25th, 2013 3:13 pm

It seems that nudity can get you tased ūüėÄ

(I’ve improved the field, added players, and police)

In the picture you can see all the security guys that bumped into the grass/each other, a player from the red team is also amongst the casualties, and last but not least, our faithful streaker getting tased by the police force…

streaker2013-2

 

 

I think that in the remaining time I’ll add goals (achievements) ¬†to the game, such as:

  1. Making two security guys bump.
  2. Injuring a football player.
  3. Causing a police officer to be tased.
  4. Other stuff.

Enough talking, I have less than three hours!!!!

 

https://docs.google.com/uc?export=download&id=0B68iBzCzE1OXQzIzVEZKZFAxcW8

(here’s a beta link, if anyone happens to try that, don’t forget to press space, and please leave a comment :))

10 seconds of fame

Posted by
Saturday, August 24th, 2013 2:31 pm

Well, it can’t be bad to have a game about your 10 seconds of fame as a streaker in a football game.

streaker2013

(In the picture you can see the “wiggle” button in action, 2 security dudes running towards me, and one that tried to tackle me but missed)

Going slower than I thought, but it will be finished!

Frameworking!

Posted by
Tuesday, August 20th, 2013 6:24 am

It appears that like Batch, you can’t just C your way through LD48 without a ¬†solid framework (at least I can’t), so I’ve started coding something to wrap SDL2 (with the generous help of rxi‘s tips and code) and it’s now in a working state.

Everything is available here: https://github.com/ashdnazg/ld27
It’s still work in progress, and I’ll probably use the same repository for the game itself, but I suppose that’s the wonderful magic of source control.

I’m now considering whether to try coding a particle manager, or try a warmup before that.

If any of you wise people have tips or suggestions, please leave a comment :)

Vote for the right theme!

No Batching this time :-(

Posted by
Saturday, August 17th, 2013 4:44 pm

Posting to say I’m in :)

I’ve decided to learn from my mistakes, and improve. That means I’m going to:

  1. Try to make a game that is actually fun.
  2. Use C as my language of choice (with SDL2). As much as I love Batch, I want to have the opportunity to invest more time in coding the core logic, and less time tweaking and optimising.
  3. Surprise myself with how awful my graphics and audio can be.

 

IDE: Notepad++
Language: C
Framework: SDL2 + my own WIP (will be posted later)
2D: Gimp ?
3D: yeah, right…
Sound: Audacity, microphone?

Good luck everybody!

LD26 Statistics – or – Make your games fun, not funny!

Posted by
Wednesday, May 22nd, 2013 8:30 am

I pythoned a bit to create a full spreadsheet of LD26 games, with percentiles. :)

Links:

Compo (CSV) Р1357 Rated Games
Jam (CSV) – 566 Rated Games

* Note that all the coolness data was taken directly from the site, and not processed.

But tables alone aren’t that interesting, that’s what graphs are for!
Here you can see how each category correlates with the overall (data taken from compo only):

score_weight

 

It’s very interesting to see where’s the most (and the least)¬†correlation:

  1. Fun (0.89)
  2. Mood (0.73)
  3. Graphics (0.68)
  4. Innovation (0.64)
  5. Theme (0.51)
  6. Audio (0.50)
  7. Humor (0.14)

 

P.S. I might post some bell curves later.

ComBAT Debriefing – or – Batch Game Architecture 101

Posted by
Tuesday, May 7th, 2013 4:12 am

Hey all,

Before I start, in case you haven’t seen my game yet, it’s here:

Now, since 99% of the comments on my entry revolved around the fact it’s written in batch, I thought I’d put a small post about the game’s (or actually engine’s) architecture.

Before you run away to the next post:

– Most of this post isn’t really about batch, I believe many concepts here are relevant to any engine/language/game.

РHowever, since the game was written in batch, I will talk about some batch-related stuff. Skip them if you like.

Funky Batching

Well, the only thing you can really do in batch is execute simple DOS commands… WRONG!

Using some amusing techniques, you can:

– Create Functions. (The downside being a performance drop)

РSplit your code into modules. (An even bigger drop)

– Parallelise your code. (If you execute two or more scripts at the same time using pipes, each will be interpreted by its own cmd.exe)

Basic Structure

flow

Let’s go through the execution step by step:

Initialization: Basically here I create all objects (player, NPCs, walls etc.) and set global variables such as the screen size.
After everything is set, three modules are being started in parallel: The input module, the main logic loop and the display module.

Input: This is an infinite loop using the “choice” ¬†DOS command for getting input from the keyboard and then writing it in the file “input.tmp”.

Display: This is also an infinite loop clearing the screen and using the “type” DOS command for printing “display.tmp” on the screen.

Logic: This infinite loop contains the core logic of the game. It reads the input from “input.tmp” executes a single game-step (moving things, playing/stopping animations etc.) and renders the result to “display.tmp” with the generous help of the rendering module.

 

Rendering

 1st Attempt:

rendering-1st

 

Well, that was the first attempt, with a single function going through the screen row by row and checking which objects should be drawn. The result would then be added to “display.tmp”.

The solution worked with almost-acceptable frame rate when the world had a total of 4 objects. The finished game has 9.

Something had to be optimised.

2nd Attempt:

rendering

Now that looks much better,

Since we’re rendering every row¬†separately, we can actually render them at the same time! Thank you multi-core CPUs!

In this solution, the afore mentioned function is called three times simultaneously, each rendering only a third of the screen into lines*.tmp. After all three are done, the three files are being merged into one: the beloved “display.tmp”.

Rendering time was nearly cut in half!

Unfortunately, As I implemented collision detection, the game slowed considerably, and everything had to be optimised a bit more!

3rd Attempt:

render3

 

Going through every row, through every object takes a lot of time.
So why can’t we go through the objects first, and check what rows they’re in! (and also store some useful calculations, to save time later).

That means we’re still going through every row, but then we only go through objects that are known to be in the row!

Furthermore, the original rendering function looked terrible at the time, and needed a full-rewrite that probably shaved some milliseconds as well.

Result? Awesome!

Debugging and Profiling

I think that at least half the time writing the game was wasted on profiling and trying to optimise code. Unfortunately MS Visual Batch Ultimate Profiling Tools haven’t been released yet.

The alternative I used was plain old logging, together with basic spreadsheets and it worked quite well!
The fun part was removing all the “ECHO After rendering: %TIME%>>time.txt” before release. ūüėÄ

I also had to debug with no debugger. Fortunately, DOS provides the awesome “SET” command that prints all variables. Yes, I had to remove all the “SET >before.set” and¬†“SET >after.set” from the code as well. :)

 

Overall

Well, there’s a reason people don’t write real-time games in batch,
actually, there are a lot of reasons.

I hope you enjoyed the post/the game/the competition, I’d be happy to answer questions in the comments.

My code can be also browsed on github: https://github.com/ashdnazg/ld26

You might want to read my less technical post-mortem here

I don’t wanna be an @ – Done

Posted by
Sunday, April 28th, 2013 5:31 pm

http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=21623

 

 

 

 

 

 

 

 

 

 

 

 

 

 

So here ends an awesome first LD, and I’m both satisfied and unsatisfied with the results. I’ll just share some thoughts I had during the competition in no significant order:

  • It appears that I saw the process as a technological challenge rather than a game development challenge. In that aspect I might have succeeded, but I really think the game should have been more fun.
  • I felt the theme really hindered me. Saying “It’s ASCII and Batch, isn’t that enough minimalism already” seemed to me like “the easy approach”. It got to the point that several times I was answering “Should I add this and that?” With “No, they’re really cool and won’t look minimalistic at all”. In retrospect that might have been a big mistake.
  • The walls closing in on you was a game mechanic from a very (very) early version, and it was really creepy at the time. I couldn’t let go of it, and it probably hindered me even more than the theme.
  • I think the ASCII animations were kinda cute, especially the punching and kicking ones. :)
  • Making them was also one of the highlights.
  • Coding this was a wonderful adventure. It was a process of rewriting every piece of code a few times so performance is reasonable. FYI if you try to implement an efficient algorithm in Batch you’re doing it wrong. If you’re trying to implement ANY algorithm in batch, you’re doing it wrong. The code just looks horrible.
  • I’m really satisfied with my take on sound :)
  • Time management wasn’t a big issue, Even though I haven’t slept too much, my parents came for a visit, I went out for a few hours and still wasn’t stressed.
  • Batch was fun, but if I do this again some time, I should definitely pick something else.

That’s it, I hope everybody learned as much as I did and had double the fun :)

See you in the next competition!

A Small Warmup

Posted by
Thursday, April 25th, 2013 1:22 pm

So I was doing some Batching, Creating some sort of 2D Engine, and the scary part is it kinda works!

Here are two screenshots from my warmup test-game that runs wonderfully at 14 FPS:

batch1

batch2

 

It’s not really game-ish as I haven’t implemented any logic like collision detection or randomness.
All the player can do is move their car (the left one) up or down between the two lanes, and see it pass through the other cars.

Somehow I think I won’t be surprised if I find myself doing a text-based game instead.
The sound implementation will definitely be used anyway :)

P.S. I really hope I won’t need a car sprite in the LD48 because I can’t see myself creating another one…

 

 

Preparing for BATtle!

Posted by
Tuesday, April 23rd, 2013 9:57 am

First LD for me, and since my chances of being successful are minimal, I decided to have some fun and be slightly unorthodox with my pick of language.

As Orson Welles’ Said: “The absence of limitations¬†is the enemy of art”, and what’s more limiting than the wonderfully horrible Batch scripting language.

so…
IDE: Notepad++
Code: Batch
2D: ASCII
3D: Extremely creative use of ASCII
Sound: 0x07 or preferably none

 

Worry not, good folks, I will not go fighting this fearsome dragon empty-handed, I’m preparing a rudimentary framework to assist me in the oncoming bloodBATh (I believe it abides the “personal libraries” rules, please correct me otherwise).

Good luck everybody!

 

[cache: storing page]