Posts Tagged ‘CSharp’
Time for our post-mortem
I won’t re-introduce the team, you can go to our “we’re in” post for that. Basically there were 3 of us and we’re pretty awesome!
So what happened?
Well, we made a time-bending tower-defence game called “10 Second Onslaught”. It’s about an onslaught you see, and the onslaught in question lasts 10 seconds:
The game wasn’t really “finished” after 72 hours even though it’s completely playable. I’m actually glad we were over-ambitious though: it’s a good beginning and something I’m still working on (in a separate branch of course )
What went well?
The art pipline was probably the one thing that went particularly well. Thomas is really a 3D artist, so soon reverted back from pixel art to making models and rendering them to bitmaps. To speed things up I wrote a couple of little ImageMagick scripts to mirror and then stick these images together into sheets. Then it was just a matter of using the haxelib spritesheet to have animated characters in the game
What went badly?
For various reasons, mostly the technology (OpenFL) being something only I had ever used before, I ended up writing a majority of the code, which is just stupid. Next time we’re going to have to organise ourselves better.
Read on for a rather long discussion of OpenFL, including comparisons to Unity 3D and Löve 2D…
So I decided to do Tower Defense type of game. Again I wanted too many in too little time. I’m happy with what I came up with. Take a look: http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=5974
I don’t have much time this weekend but I’ll try to find a few hours to make simple-simple game. This would be my 4th LD if I remember correctly.
Tools are almost the same:
And here’s my workspace. As you can see, I’m currently away from home (“studying” engineering
Good luck to you all and of course – have fun!
If you haven’t had chance to play my game from last LD Compo 24, I have finally managed to find some time to record and upload a video. Game is called “Aeon” – evolved classical snake game.
Ok now, go ahead and admit it — who created 1543 fake accounts and upvoted Evolution?
(╯°□°）╯ ︵ uoıʇnןoʌǝ
But on a serious note. As a late time-zone starter and unhealthy oversleeper, I’m 3 hours in now. After (obviously) dumping my first idea, I’m going take the evolution concept to a more controlled, fabricated fashion (read: I can only draw rectangular shapes).
I wonder what will go into the pipes?
P.S. I didn’t know if I was going to participate in this LD and I skipped the last one (tsk tsk tsk). So I guess this is my “I’m in” post. I’ve previously submitted one 48h entry (Soulscape) and one collaborated Jam entry (Braille). I’m aiming at the main compo this time, but we’ll see.
I probably won’t use this next weekend, but I’m posting this just in case I do want to use it.
GNI is a library to facilitate some simple, easy to use communication between a server and any number of clients.
Please note that this was coded in a relatively short time span, it was not tested extensively, network code is vulnerable to tons of unpredictable bugs, and my experience with netplay development is limited.
What I want to say is, don’t rely on it unless you’re capable of fixing bugs in it, as it might break at the worst possible moment.
The example chat program I wrote seems to work perfectly, though, so it should work. ‘Should’ being the key word here.
-Simple way to send signals from server to client and vice versa, without bothering with minor technical details
-Automatically calls a function when a signal is received, a player connects, or a player disconnects
Code includes a simple chat server project and chat client project as examples.
How it works
Small packages of information called GNIDatas are sent through the library. When received, it’s reconstructed as a GNIData struct.
GNIData consists of a key-value pair, with the keys or values being shorts (16-byte integers), strings, or nothing.
-The server class must inherit from the library’s GNIServer class.
-Call StartServer(…) to start the server. You can have it check for incoming signals automatically, or choose to do so manually by calling Update().
-Override OnDataReceived(GNIData data, uint source) to interpret signals. It’s called from Update when a full GNIData has been received. ‘Source’ is the clientID of the client that sent the signal.
-Override OnClientConnected(GNIClientInformation client) if you want something to happen when a player joins. (The client is automatically added to the client list.)
-Override OnClientDisconnected(GNIClientInformation client) if you want something to happen when a player disconnects. (The client is automatically removed from the client list.)
-Use SendSignal(…) to send a GNIData to a client, or BroadcastSignal(…) to send a GNIData to every client.
-Send empty signals (datatype and valuetype ‘none’) if you want the server to automatically detect if a connection has been lost; otherwise it won’t notice until it fails to send a signal to it.
-The client class must inherit from the library’s GNIClient class.
-Call StartClient(…) to start the client. It WILL NOT check for incoming signals automatically; call AutoPoll() to have it do that. Alternatively, call Update() whenever you want to check for incoming signals.
-Override OnDataReceived(GNIData data, uint source) to interpret signals. It’s called from Update when a full GNIData has been received. ‘Source’ is always 0 and meaningless in the client.
-Use SendSignal(…) to send a GNIData to the server.
-To be honest, I’m not sure what happens when the client unexpectedly loses connection to the server. It’ll probably throw an exception, so just catch that.
Does not exist. If you can’t figure out the code, it’s best not to use it as it might still be buggy.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
You are free:
* to Share — to copy, distribute and transmit the work
* to Remix — to adapt the work
* to make commercial use of the work
Under the following conditions:
* Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
Have fun, and good luck with your games.
I return once more from the brink of insanity, TO THE BOWL OF IT!!! }:)
I honestly can’t tell you guys how excited I am for this, I LOVE THIS COMPETITION! This is my 3rd time participating, and since the last one I’ve actually started a company and published a few games! You can check those of us at Syntactic Sugar Studio out here, or here on Facebook.
Anyways, I’ll be using the following:
Language: C# and JS
Music: FL Studio 9
Art Assets: Paint.Net, PixelEdit(tiling tool created by a friend)
Libraries: Of my own design, which I will make available on the studio site.
ETC: Goldfish, family, and friends! But mainly Goldfish.
Phil’s made a nice gameplay walkthrough video for our game Braille:
Here is our double timelapse for Braille:
Now ladies and gents, pleeeeeease be nice.
This is my baby. My cumulative game developing experience distilled into one sugary goodness. My 1/8 complete Mona Lisa(M?). I’ve developed more than a few finished games, and abandoned WAY more games than I care to think about. This .dll contains solutions to problems that haunted me for literal weeks.
And now I share them with you. All I ask is that if you do use it, PLEASE TELL ME WHERE I CAN IMPROVE IT. Like I said, this is nowhere near finished. In fact, it will most likely change by the time Ludum Dare gets here! In fact I can guarantee it will, I still need to add in my flexible animated texture stuff…
What it does:
-Circle and Convex Polygon Collision
-Common texture stuff (animation, atlases, particle engines, etc.)
Have questions? Ask. It is very well commented, and has all the appropriate XML documentation for Visual Studio.
Happy Game Dev!
EDIT: The link was incorrect, but has now been fixed.
My first post-mortem for my first finished game for my first LD (entry here). Those are all stand-alone firsts. I have never actually finished a game to a point where I post the .exe for others to play. It’s just never good enough for me (we’ve all heard that one before). Anyway, post-mortem:
Not much to say here really. My first thought was — who wants to escape the most? Well, trapped souls from the depths of hell, obviously. In retrospect, that being my first answer says something about me. I also knew I’m not doing a platformer. From then on, I just kept adding random ideas/features with a promise to not go back and redo stuff.
I think the idea/concept turned out fine (or at least we’ll see after ratings ^_^). I didn’t expect to come up with any groundbreaking ideas and I didn’t have all day to think of one either. I saw a few people bail out and rewrite their code, so I’m happy I managed to stick with mine. I also saw too many people going “need more levels”, “need more level ideas”, “I only have 524 levels, help!” One of the reasons why I did not go the platformer route.
10am (5h in) — wake-up
10am-5pm — code
5pm-6pm — break
6pm-8pm — code
8pm-9pm — blog post
9pm-1am — Assassin’s Creed Brotherhood
10am — wake-up
10am-3pm — code
3pm-330pm — break
3:30pm-4:30pm — code
4:30pm-7pm — beach
7pm–12:30pm — code furiously
1am-1:30am — blog post, submit
That’s a total of 9h+11h=20h out of 48h. Sure, I could have spent more time coding. But if my overnight Uni reach-the-deadline coding sessions have taught me anything, it’s that I don’t like them.
I think I oversaturated the game with features, especially since they all are accessible at once (if not usable). I didn’t think it was possible to have too many features for a 48h game, but there you have it. I have a nice tutorial screen to introduce everything though:
Only now do I realize this, but there are 600 games and finishing every game is near impossible. You have to keep it simple, stupid! Who has the time to read all that verbal diarrhea? I foyu skip the “help” button, you have no idea what you are doing. That said, there is nothing bad with complexity, in fact many games are known and praised for it. But you have to take it step by step. Introduce gameplay elements as the player progresses and plays, not throw everything at them at once. I think this may have be my biggest design flaw (besides lack of music). But then again, an in-game interactive tutorial in 48h? Moving on…
Let my art speak for itself! (more likely growl out “kiiill meee”) Here’s the entire sprite-sheet:
I’m not an artist, I’m a programmer. All my units are either static of flying, so my “move” animation is 1 frame One thing I did wrong is make all the terrain colors too dark. Units and props stand out OK, but the terrain itself has too little contrast, and it really shows in screenshots. My Holy Light could have been more impressive too. I wanted a magnificent beam of shiny and awesome, but all I got is this lousy flashlight.
I’ve done very little with sound and games, so this wasn’t my strong side. I did decide to try out sfxr, which was a super-easy and quick way to produce relatively awesome sound effects. Ended up with 8 different sound effects. Obviously, I have no music and I couldn’t make any myself anyway. I’ve played around with Fruity Loops or whatnot in my day, and concluded I have no musical hearing. Not that my music teacher hadn’t made that perfectly clear back in grade 3.
Spaghetti code! Argh, my eyes! Not a single useful comment, dirty inefficient hacks, integers instead of constants or enums, … That’s K.I.S.S. and time limit for you! *shudders* I don’t think I could go on working with this code much longer. Then again, I’ve seen much worse too.
What I do appreciate in my coding style is the object-oriented design. Even with the number of classes spanning into second dozen, I didn’t get any game-breaking bugs that were more than careless copy-pasting.
Can’t say anything went terribly wrong. I probably would not have done much better with any other themes anyway. I could have spent more time coding/drawing, but then I would just exhaust myself beyond “fun”. I’m proud of myself for sticking with this till the end, even if my first thought was “Escape? What bollocks!”.
I love C#, XNA, and ReSharper and the speed at which I can chunk out code/features. I also know how many raters I’m losing by not having a “Web” play link. It would’ve been better if I had a Flash or Unity or something entry. But then I would have had to learn it first
Ludum Dare has been great so far, I love the community activity, and I can’t wait for the super-secret-October-make-a-buck type challenge.
My game for this compo was Black Hole, a game where the objective is to escape both the horde of Drones who cornered you, and the black hole which they cornered you against.
Fortunately for you, a long-dead alien race left a platform here, which feeds off of the emissions of the black hole and broadcasts energy to all nearby ships. You have moved in close to this platform and the black hole itself, and thus avoided the gigantic Drone Mothership which was chasing you. However, the smaller Drone forces can and did pursue you, so now you must hold out against them to recharge your Jump Engines, allowing you to jump to beyond lightspeed and escape to your home.
The coding process was quite frantic. I had to write the entire game engine, and at one point ended up re-writing and re-integrating the entire collision engine, as I had failed to discover that my method of detecting overlapping rectangles was not accurate if they were rotated. Fortunately, I’m quite skilled with circle based collision, and it only took about 20 minutes to switch and integrate.
Another thing to note: I was high on Oxycodone and other painkillers the entire time, having gotten my wisdom teeth removed on Thursday. This caused many dumb mistakes, the majority being simple math related. I persevered through it though, and ended up coming out with what I think is a fun game!
Plans for the future: to continue to develop this game. I want to add more enemies, powerups, and new game modes.
Timelapse Part One is here.
Timelapse Part Two is here.
I’ll be writing a Post Mortem at some point… Thanks for the fun times all! Cheers!
Edit: 1814 lines of code, for those of you who care.
I have spent a little short of 20 hours on active development. This is roughly two fifths and not quite the 48 hours. Then again I haven’t broken my 1am-10am sleep routine and did take a break or two (or more).
Since my first post, I have been partly polishing the existing features, partly struggling to add new ones. New large ones include a few more objects, a minimap, lighting, sounds, and tutorial and menu screens. In the end, I rather go for a finished, brief game, than a feature complete, but too rough-around-the-edges game. Then again, I went for a “sandboxy” gameplay, so you cannot really tell something is missing until you try it first. Here’s a screeny:
You can download it here (Requires XNA and .NET):
P.S. sfxr is awesome, I did not expect to have any sounds in the game, given very little prior experience with sound effect creation and total lack of musical hearing.