Posts Tagged ‘lessons learned’

Sixth time in LD, but…

Posted by (twitter: @benhurvillar)
Wednesday, April 13th, 2016 6:36 pm

Hello guys, this will be the sixth time I do something for Ludum Dare, BUT, will be the first I do alone. I’m trying to get a different experience this time – not the other times were not different. Actually, me and my friends always try to do absolutely different things one of another, and this gave to us more vision of what it work and what not work in a LD game. And the principal to get a successful LD game: focus in only ONE goal to your game. Fun, feel, beautiful art, etc. It’s a short time, so… to give our best, we have to focus in a single objective.

You can see my older LD games here with something that I learned of each one:

#1 – My first game, made in Flash – this was before I learn Unity. It was really hard to get finished. Too much things for a flash game in 3 days.
Do Androids Dream of Freedom

#2 – My second game was not finished – still in flash and a bigger mechanical scope – yep, doesn’t work.
No link  :(

#3 – A catch-up local multiplayer game – it was a very fun game, and made success in local events but… who test in LD community is alone, so explains the low ratings. Keep that in mind for your game. I’m not complaining, I liked to have done it. You just have to know the ways to achieve the goal of your game.
Catch Pet

#4 – A battle game based on turns with some kind of “guitar hero” mechanic. – I did not participate in the creation and planning, I only did the animations. So… here it is.
The Last Walker

#5 – A samurai killer becomes a monster and terminate all your enemies in front of him. This was made by me and only other friend. So, the only goal was really needed. Fun in gameplay. We reached 9º in Fun with this game. :)
Youkai

 

Good LD to all!

Oh man, look at the time!

Posted by (twitter: @argontus_)
Sunday, August 25th, 2013 1:45 pm

This has been a very inspiring Ludum Dare so far. Especially as it’s the first time I’ve taken part!

Looks like my game isn’t going to make it through in the Jam in a playable state, as I’ve got work tomorrow. However, I like the idea (which has been contributed to a lot by my lovely girlfriend) so I’ll try to finish the game during the next week or so.

 

My game is called Ludum Dare Simulator, or LDS #2.78e^-3 for short, and the idea is that you have to create a game for LD in ten seconds by clicking relevant things around your desktop. The game involves a lot of frantic mouse bashing and should be entertaining for at least 30 seconds. We’ll see, hopefully.

Here’s a couple screenshots from the game thus far. It has working intro, menu and game states, even though the game state is still quite empty and lacks the game mechanics.

lds_menu

lds_game

Most of my time has sinked into coding basic stuff such as application class, state system, animation and UI systems, and this is my nemesis – it is hard to not create too large and complex systems for a project of this scope. I wrote and maintained a large cross-platform UI library at work during last winter and based on that experience I luckily realized what an endless mess I was heading to today, so I cut it short and decided to go the simple route with this project. So at the moment I have no generic UI code, all the drawing and events are handled in states. That aside, this LD has been a great way to learn to use SFML.

I have also burned many hours at drawing the art. I’ve never really done pixel art before, so it has been quite a learning experience.

 

I think I’ll head to bed soon, so I wish the best of luck to everyone and thank you for the awesome Ludum Dare! Next time I will be prepared!

Tiny God : PostMortem Addendum

Posted by (twitter: @ryroper)
Thursday, April 26th, 2012 12:17 pm

My original Postmortem is here.

Since LD submission and I released my game I’ve found that I learned a lot of additional things from the reviews I’ve gotten.

Even if you put an Instructions link on the first screen of the game, people won’t click it and then will ask how to win your game.

I’m not sure how to solve this one except to somehow reveal the win condition during play, or if this is something to be worried about.

Even if you think your instructions are informative enough about your game, they probably arent.

I included a mini tutorial system in my game to guide the player through playing and instructions but I still didn’t include enough info. I should have had more friends play test the game when it was near submission time so I could polish these things more.

If you have random enemy generation, make sure it’s right.

I had a really stupid bug in my submission build for my enemy wave generator, I didn’t realize it until people started commenting how easy the waves where. I went back and found the bug right away.

If you build a web based game, don’t just link to the game itself, but embed it in a page with more info.

This one I just kind of realized. I ran out of time at the end and just posted a link right to the swf file instead of making a simple page to embed it in so I could put FAQ or other information in front of the player in case they are linked to it from places other than LD.

 

Anyway, I just thought others might want to learn from my mistakes. You can find my game here. I’ve also added a link for a Work In Progress version with bug fixes and updates suggested by players.

Thanks for reading!

 

Morte d’Post

Posted by (twitter: @bastiandantilus)
Monday, December 19th, 2011 2:20 pm

In the end I spent too much time researching possible engines and didn’t get anything finished. A lot of time was wasted trying to figure out how to make Slick2d work in an applet. But really I didn’t have a game to applet…ize.

Game Name: Kitten Alone

Language: Java

Libraries: LWJGL, Slick2d, MarteEngine

Completion: 10%

I ran out of time leading up to the event to do the kind of self-education that would have made this possible. My current plan is to continue working on the game (and changing the title…) so next event I’ll have a better idea what I’m doing. And if for some reason my Java skills aren’t up to snuff by the next Jam, I may need to make the next entry in Basic. Or ActionScript 2.

hide and seek – what I did

Posted by
Sunday, December 19th, 2010 7:33 pm

As expected this participation didnt reach the end with an complete game, but at least I moved forward in some research 😀 was able to create some nice pieces that I believe I will use soon or later :

– store the user location and movement direction in a server
– make the server based on tomcat
– remove the inactive users from the list of current users
– make unity to send the current position and movement direction of an character
– receive on unity the result of http calls using POST

now my next steps will be :
– beased on the list of objects from the server, keep track of the necessary objects to create and show.

good luck all !
cheers

Diodontidae – postmortem

Posted by
Saturday, May 2nd, 2009 10:07 pm

I believe a better name than post mortem would be lessons learned, so let’s see my lessons learned from the  competition. I would love to read this before the compo, as I can’t make the time go backawards, let try at least to help other newbies.
1. create the menu navigation at the start of the competition
As I was fighting agains some physics problems during the development process most of the menu was left behind. Then I realized 30 minutes to the end that my menu would be an image =) and a play button…

The lesson on this would be, use time in the middle of the nightmares to do these brainless activities, because what can go wrong while build a menu ? =)

2. draw in the paper build and color in the computer
That helped alot, I save my day manipulate the lines with inkscape, but … in order to slice images I have a nightmare with inkscape, go with Gimp works as a breeze

3. dont split images, let the engine split for you
ahhhh I spend some hours cutting images lol !!, could use something like http://love2d.org/docs/love_graphics_draws_1.html to draw a subsprite of the image …

4. make physics work for you
Oh Well after the physics hit me in the head, I learned some details and was able to make it work in a decent way, special note for the boats that hang around over the sea, for that I created a sequence of x,y that is the path to the boats, and I try to follow the path, I believe if I make the water line as an object and change its group to only colide with the boat would be the best to move the boat around.

5. clean the tables in one place only.
Not sure why, buit when I was removing items from my objects list in teh collision handler the LOVE was just crashing … workaroiund that I found : flag to items to be removed and remove in the update() method and one by one from each table, this is call at the end of the update() for each cleanable table :

[code]— clean the tables
function cleanTable(table2Clean)

for n=1,table.getn(table2Clean),1 do
if table2Clean[n].dirty ~= nill then
table2Clean[n].poly:destroy()
table2Clean[n].body:destroy()
table.remove( table2Clean, n )
break
end
end
end
[/code]

and at the collision handler, I dont remove the pig from the list, just flag it
and I believe that this would be a nice way to animate the pig booom =)
by using a multistate, like alive/almost dead/dying/im outa here :)
would change the image section, or play an animation … and at the end remove from the list
that would be great …

[code]
function killThePig( id )

love.audio.play( audioCollision, 1 )
pigsKilled = pigsKilled +1

for n=1,table.getn(pigs),1 do
if pigs[n].poly:getData() == id then
pigs[n].dirty = true
break
end
end
end
[/code]

6. reusable files should be in a folder
I’m using for labels the .lua classes that I made called LOVEly-eyes, but I had this problem with the Text object that wasnt transparent … Oh well I went in the code changed the super class, Rectangle to handle this and the Text is transparent by default, cool, but but but … :) after that I just copied all the files from the LOVEly-eyes folder to my game folder … too bad because I copied a main.lua file together … If I wasnt using subversion would be a nightmare … now LOVELy-eyes are in a separated folder =)

7. use a version control system
I used subversion, saved me when I made an stupid folder copy … revert and just lost some minutes of work… bu remember keep on committing =)

8. put together a zip with everything
Better that just the .love file, create a package with the execs, the best would be create an installer.

9. level up level up !!!
people like rewards, so more than the score I should add level concept, just with faster attack of the pigs, or a different scenario with different speed .. hummmm that would be cool a .lua file for each level :)

10. collision has 2 sides … A and B
It took me some time to realize that A and B collision data, first they are the DATA from the polygon nothing else, just disconnected data, not a reference, not and pointer … hehehhe string data what makes very nice and unplugged from the code, and you have to test both sides, if wherever A colide on B and the oposite, this was my colision code

[code]function collision(a, b, c)

if string.starts(a, “pig”) and string.starts(b, “battery”) then
killThePig( a )
removeTheBattery( b )
elseif string.starts(b, “pig”) and string.starts(a, “battery”) then
killThePig( b )
removeTheBattery( a )
elseif a == DIODONTIDAE and string.starts(b, “food”) then
eatFood( b )
elseif b == DIODONTIDAE and string.starts(a, “food”) then
eatFood( a )
end

end

function string.starts(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
[/code]

note that I used start() because I add the object id after the type, so I can grabb it from the list, something like “crap_2”, “crap_3”

11. scroll the view is possible Luke… use the force !
Ha ! not the force, at the end I solved the screen scrolling with a simple solution, calculated a shif from the main character and update this shift in the update() method and every single draw has this shift. So the camera is following the character, thats stays in the screen all the time, and to avoid the char to drop outside the world I add invisible walls on left and right side and check if the cameraX is in the possible range,

this in the start of the code

[code]
startCameraX = love.graphics.getWidth( ) / 2
startCameraY = 200

cameraX = -startCameraX
cameraXLimit = {}
cameraXLimit.start  = 0
cameraXLimit.finish = -2905
[/code]

+ cameraX on each draw
[code]
love.graphics.draw(diodontidae.image,
diodontidae.theChar:getX() + cameraX,
diodontidae.theChar:getY())

—— draw the batteries
for n=1,table.getn(batteries),1 do
love.graphics.draw(
imageBattery,
batteries[n].body:getX() + cameraX,
batteries[n].body:getY(),
batteries[n].body:getAngle() )
end
[/code]
this on the update()

[code]    cameraX = startCameraX – diodontidae.theChar:getX()

— keep the camera in the boundaries
if cameraX > cameraXLimit.start then
cameraX = cameraXLimit.start
elseif cameraX < cameraXLimit.finish then
cameraX = cameraXLimit.finish
end
[/code]

[cache: storing page]