Jump to content
IGNORED

The Game Development Thread


A nice cup of tea
 Share

Recommended Posts

On 18/04/2017 at 15:29, monobrow said:

I've got a few simple game ideas that want to do something with, but I'm so rusty on coding that I might as well consider everything out there, instead of just relearning languages I've used ages ago. Apart from Siread, has anybody on here done much with Monkey? If so, what did you think of it? Is it easy to pick up? Any good books to refer to? What are the limitations? 

 

Personally I'm biased but I would recommend getting stuck into Unity. 

 

So much of the stuff you need for prototyping is already out there for free, and there are so many good tutorials. With some googling and the asset store you could probably get by with almost no coding at all.

 

Link to comment
Share on other sites

Watched that talk recently too and have watched some of his other youtube vids about the language in the past.  Excited about it but also a bit hesistant as although it does sound faster in raw compile speed, it sounds a whole new level of complicated being able to manipulate the code while compiling (so now you need to debug the compiling of your game?!).  From the questions near the end it won't be that optimised for topend 3d graphics for a while (so while it's based on the witness code it wouldn't be able to run the witness well) but if it can lead to less head-scratching code than C++ does and gets enough uptake then hopefully it'll do well...

 

I also watched a talk about DICE/EA's frostbite engine recently and the scripting that it is capable of (https://www.youtube.com/watch?v=mxs_x5ne9JY ) which sounds quite impressive in its own way (uses ironpython so gets access to all c# and python libraries on top of their own code).  The idea of being able to run scripts on the live data sounds potentially nicer to me than at compile time as you have more control (you can select something and then run a script on just that to test it out, etc. without having to know at compile time what you want to do..).  But it's probably slow to load/compile etc!  Can't win em all :)

Link to comment
Share on other sites

On 18/04/2017 at 15:29, monobrow said:

I've got a few simple game ideas that want to do something with, but I'm so rusty on coding that I might as well consider everything out there, instead of just relearning languages I've used ages ago. Apart from Siread, has anybody on here done much with Monkey? If so, what did you think of it? Is it easy to pick up? Any good books to refer to? What are the limitations? 

 

I'm in a similar position to you, been working on a game since this time last year, and I ended up just writing it in the ancient Blitz Plus language (distant ancestor of Monkey) simply because it was what I knew. I tried Monkey and Game Maker and was not impressed by either of them.

 

My brief experience of Monkey is that it's a horrible fudge of a language designed so it can be procedurally source ported to Objective C and C# among others, with the side effect that it's inherited the quirks, stumbling blocks and limitations of every language it needs to be source ported to.  The selling point of the earlier Blitz family of languages was you got the functionality of C or C++ with an easy BASIC style Syntax, the trade off being it was a non-standard language that has since faded into obscurity. Monkey has none of that user friendliness so you're stuck learning a complicated, dead end language.

 

Game Maker I felt the drag and drop interface and the underlying language were constantly at odds with each other and there were endless obstacles in the way of me just sitting down to write code or even being able to do what I feel should be the simplest of things like draw graphics to the frame buffer and have them look the way I wanted.

 

I think Unity / C# is the way forward at present and it's what I'm going to port my game to when I've finished hammering together my prototype in Blitz. if Unity ever dies out you'll still have learnt a "proper" language that will carry forward.

 

Link to comment
Share on other sites

  • 2 weeks later...

Further to my earlier post (and hope I'm not spamming by posting here again) am proud/excited/nervous to announce the game I'm working on (currently PC windows only) is now on kickstarter:

https://www.kickstarter.com/projects/405964313/kynseed-a-whimsical-sandbox-rpg-adventure

 

Launch was yesterday and have had great support so far with some press just starting to appear.  Any feedback really welcome and if you like it would be grateful for any support you can give in spreading the word to those who might be interested...

Thanks!

Link to comment
Share on other sites

Here's some icon tests I'm thinking of for T20CC. I've got some iOS icon templates that let me see the icon at various sizes and in situ on mocked up backgrounds. They all look easily visible.

My personal preference is the black jersey version, but the Indian one looks really good as well.

Thoughts?

 

T20CC-IconTest.jpg

Link to comment
Share on other sites

Thanks for opinions so far. I like the blue/orange one as well, although I think the green one reads better at a smaller size. I think the brown face looks best large, but at a smaller size, it gets a bit muddy.

Some horrible compression, but if you click on the image to view it in the lightbox, it looks cleaner.

T20CC-IconTest-InSitu.jpg

Edited by Jonathan_Kerr
message about lightbox
Link to comment
Share on other sites

As far as I know, no. Otherwise I'd have tailored the icons to the most common ethnicity of the region. Can anyone else confirm that it is one icon for release?

We do have a 'lite' version of T20CC being released in India (Indian playable character only, but with much smaller game size) which we would definitely use the blue on orange design.

Link to comment
Share on other sites

Yeah just looked at the Apple guidelines:

 

Quote

Localizable

  • Screenshots
  • Whats New in This Version *
  • Description *
  • Keywords
  • Support URL *
  • Marketing URL *

Not localizable

  • Build
  • App Preview
  • Icons
  • Version number
  • Rating **
  • Copyright *
  • Trade rep *
  • Routing app coverage file *
  • App review info
  • Version release

 

Shame

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

I've been working on a multi-player arena combat game for a while, Shuriken Assassins. The video here only shows 2 players, but it does support 4 players. Had the chance to watch 4 players enjoying it last week for a good 30 minutes or so and really enjoyed watching them enjoy it. Just don't know what to do with their feedback because I don't agree with it! (Players move too fast and jump too high, should have a double jump instead, etc.)

 

Anyway, here's the video I mentioned (I've fixed a bunch of bugs since but nothing you'd really notice in this video):

 

 

Link to comment
Share on other sites

The general rule in user testing is not to listen to the specifics of what they are asking. Take their feedback as "the movement doesn't feel right" and work out your own solution for it, or don't if you think it is fine as it is. How many people have similar feedback? Was it just them 4 from last week? If so, it's not a wide enough test to give you proper feedback.

 

I don't think the movement looks bad though. Gives me mad feels of #IDARB which I love and is crazy hectic. I think it looks good, can't wait to give it a go. It's out next week right? ;)

Link to comment
Share on other sites

On 08/05/2017 at 17:13, Jonathan_Kerr said:

Here's some icon tests I'm thinking of for T20CC. I've got some iOS icon templates that let me see the icon at various sizes and in situ on mocked up backgrounds. They all look easily visible.

My personal preference is the black jersey version, but the Indian one looks really good as well.

Thoughts?

 

 

 

I can't remember if you're also doing a Google Play version, but Google Play lets you set up an A/B test with multiple icons when the game is live on the store.

Link to comment
Share on other sites

Nice - that's really good to know.

I'm at the point now where I just want it out. Hahahaha. iOS testing seems to be going pretty well, with most testers finding the same 2 or 3 bugs and no major new ones being found. Hopefully Android is the same...

Just a shout out, if anyone wants to test the next build, hit me up on DM. We already have a few Rllmuk'ers on the pre-beta test.

Link to comment
Share on other sites

  • 2 weeks later...

Did some work on Shuriken Assassins at the weekend. Added in some more characters and also some neat effects to make the game more visually appealing.

 

Also made some small gameplay changes, e.g. you are now invulnerable for 3 seconds after respawn, although you can't throw shurikens in that time. Grabbed some gameplay footage yesterday with some testers, most of whom hadn't played the game before so they are generally a bit crap at it!

 

 

Link to comment
Share on other sites

  • 3 weeks later...

I've been using the original Game Maker on and off for a while now and find it pretty easy to get into with little to no coding experience (I did a bit of Pascal during my A-level days and nothing since, also worth pointing out I totally failed that A-Level!)

 

I assume GMS is the same as GML (A word change from Language to Script?). I would highly recommend Tom Francis' "Make a game with no experience" series of tutorials.

 

 

I haven't been through the whole series but the first 7 or 8 not only made me familiar with the syntax used but more crucially finally drilled into my thick head how code works and gave me a better understanding of how I should order it and tackle what I wanted to achieve.

Link to comment
Share on other sites

  • 2 weeks later...

Gameplay loop first. Not even what I suppose you would call a full-fat vertical slice, just some minimal implementation that demonstrates that the core mechanic is engaging. Without this there's no real reason for the other stuff to exist.

Link to comment
Share on other sites

I like creating a quick and dirty prototype, to see if my awesome idea for a game is actually as awesome as I think it is. Nothing but colored squares for graphics most of the time, and just the game loop to get a feeling of actually playing it.

 

Link to comment
Share on other sites

I decided to abandon OpenGL today and start working with Metal on OSX and DirectX 12 on Windows. 150 lines of code later, I've got my from scratch Metal app drawing a triangle. Now I just have a few dozen renderer classes and shaders to port then do it all over again for DX12.

 

#import <Cocoa/Cocoa.h>
#import <Metal/Metal.h>
#import <QuartzCore/CAMetalLayer.h>
#include <simd/simd.h>

static const vector_float2 triangleVertices[] =
{
    {  1,  -1 },
    { -1,  -1 },
    {  0,   1 },
};

@interface AppDelegate : NSObject<NSApplicationDelegate>
{
    NSWindow* window;
    NSView* view;
    id<MTLDevice> device;
    id<MTLCommandQueue> commandQueue;
    id<MTLLibrary> library;
    id<MTLRenderPipelineState> pipelineState;
    CAMetalLayer* layer;
    CVDisplayLinkRef displayLink;
}
- (BOOL)update:(CVTimeStamp const *)timeStamp;
@end

static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink,
                                    const CVTimeStamp* now,
                                    const CVTimeStamp* outputTime,
                                    CVOptionFlags flagsIn,
                                    CVOptionFlags* flagsOut,
                                    void* displayLinkContext)
{
    AppDelegate *appDelegate = (__bridge AppDelegate *)displayLinkContext;
    return [appDelegate update:outputTime];
}

@implementation AppDelegate

-(void)dealloc
{
    CVDisplayLinkStop(displayLink);
    CVDisplayLinkRelease(displayLink);
}

- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
    NSRect contentRect = NSMakeRect(200, 200, 800, 600);
    NSWindowStyleMask styleMask = NSWindowStyleMaskTitled|NSWindowStyleMaskClosable|NSWindowStyleMaskResizable;
    window = [[NSWindow alloc] initWithContentRect:contentRect styleMask:styleMask backing:NSBackingStoreBuffered defer:NO];
    view = [[NSView alloc] initWithFrame:contentRect];
    window.contentView =view;
    
    device = MTLCreateSystemDefaultDevice();
    
    layer = [CAMetalLayer layer];
    layer.device = device;
    layer.pixelFormat = MTLPixelFormatBGRA8Unorm;
    view.wantsLayer = YES;
    view.layer = layer;
    view.needsDisplay = NO;
    
    commandQueue = [device newCommandQueue];
    library = [device newDefaultLibrary];
    
    MTLRenderPipelineDescriptor* pipelineDesc = [MTLRenderPipelineDescriptor new];
    id<MTLFunction> vertexShader = [library newFunctionWithName:@"vertexShader"];
    id<MTLFunction> fragmentShader = [library newFunctionWithName:@"fragmentShader"];
    pipelineDesc.vertexFunction = vertexShader;
    pipelineDesc.fragmentFunction = fragmentShader;
    pipelineDesc.colorAttachments[0].pixelFormat = layer.pixelFormat;
    pipelineState = [device newRenderPipelineStateWithDescriptor:pipelineDesc error:nil];
    
    CVDisplayLinkCreateWithActiveCGDisplays(&displayLink);
    CVDisplayLinkSetOutputCallback(displayLink, &DisplayLinkCallback, (__bridge void *)self);
    
    [window makeKeyAndOrderFront:nil];
    CVDisplayLinkStart(displayLink);
}

- (BOOL)update:(CVTimeStamp const *)timeStamp
{
    @autoreleasepool
    {
        id<MTLCommandBuffer> commandBuffer = [commandQueue commandBuffer];
        // TODO: signal a semaphore in commandBuffer's completion handler here...
        
        id<CAMetalDrawable> drawable = [layer nextDrawable];
        
        MTLRenderPassDescriptor*   renderPassDescriptor = [MTLRenderPassDescriptor renderPassDescriptor];
        MTLRenderPassColorAttachmentDescriptor* colorAttachment = [MTLRenderPassColorAttachmentDescriptor new];
        colorAttachment.texture = drawable.texture;
        colorAttachment.clearColor = MTLClearColorMake(0.0, 0.0, 1.0, 1.0);
        colorAttachment.loadAction = MTLLoadActionClear;
        colorAttachment.storeAction = MTLStoreActionStore;
        [renderPassDescriptor.colorAttachments setObject:colorAttachment atIndexedSubscript:0];
        
        id<MTLRenderCommandEncoder> encoder = [commandBuffer renderCommandEncoderWithDescriptor:renderPassDescriptor];
        [encoder setRenderPipelineState:pipelineState];
        
        [encoder setVertexBytes:triangleVertices length:sizeof(triangleVertices) atIndex:0];
        [encoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:3];
        
        [encoder endEncoding];
        
        [commandBuffer presentDrawable:drawable];
        [commandBuffer commit];
    }

    return YES;
}
@end


int main(int argc, char *argv[])
{
    [NSApplication sharedApplication];
    [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
    
    @autoreleasepool
    {
        NSMenu* bar = [[NSMenu alloc] init];
        [NSApp setMainMenu:bar];
        
        NSMenuItem* appMenuItem = [bar addItemWithTitle:@""
                                                 action:NULL
                                          keyEquivalent:@""];
        NSMenu* appMenu = [[NSMenu alloc] init];
        [appMenuItem setSubmenu:appMenu];
        
        [appMenu addItemWithTitle:@"Quit"
                           action:@selector(terminate:)
                    keyEquivalent:@"q"];
    
        NSImage* image = [[NSImage alloc] initWithSize:NSMakeSize(128, 128)];
        [image lockFocus];
        [[NSColor redColor] setFill];
        [NSBezierPath fillRect:NSMakeRect(0, 0, 128, 128)];
        [image unlockFocus];

        [NSApp setApplicationIconImage:image];
    }
    
    AppDelegate* delegate = [[AppDelegate alloc] init];
    if (delegate == nil)
        return -1;
    
    [NSApp setDelegate:delegate];
    [NSApp run];
    
    return 0;
}
#include <metal_stdlib>
#include <simd/simd.h>

using namespace metal;

vertex float4 vertexShader(uint vertexID [[vertex_id]], constant float2 *vertices [[buffer(0)]])
{
    float2 in = vertices[vertexID];
    float4 output = vector_float4(in, 0, 1);
    return output;
}

fragment float4 fragmentShader(float4 in [[stage_in]])
{
    return float4(1,0,0,1);
}

 

 

598580f953699_ScreenShot2017-08-05at09_21_37.thumb.png.eaba88f0c2c09421152ac5a1748297a9.png

Link to comment
Share on other sites

On ‎29‎/‎07‎/‎2017 at 20:48, sir shrew said:

Hi guys, l'm learning Gamemaker Studio 2 and have found some great tutorials, but I have a broader game dev question you guys might be able to help with. When planning and executing a game project, where do you start? Do you get all the graphics in place in first? Start building individual levels/ "Rooms"? Player movement mechanics? Start with a title screen?

 

What's the most effective workflow?

 

As others have said, get the core gameplay up and running first - and using placeholder assets is the usual method. However, an important thing is to find the fun, and so a key thing to look out for is opportunities to bring that out quickly. This could be anything at all, and will vary from game to game. Sometimes you might just need to get a bunch of game mechanics in place and that will do. However, if you've got a game that will rely on something graphical for the fun - like over-the-top amounts of blood flying out of enemies - then look at getting that in ASAP to make sure it's as fun as you think. It could be animation - if your main character is a bouncy squashy blob, then the bouncy-squishiness will probably be key - you'll get charm and character out of it.  It could just be a sound-effect - sound makes a huge difference to whether something is fun or not. In a real-life example, I worked on a game that was no fun whatsoever, until we changed the main obstacle from lasers to metal poles, and then added a "frying-pan" clang when you got hit in the face by it, and it suddenly became properly great.

 

An example I like to use about how I personally think about making games is my approach to making a driving game. First I'd add a box to be the car. Then I'd make it go backwards and forwards and allow you to steer left and right. Next I'd add the horn. I don't even know if I need a horn yet, I just know that horns are fun, and adding one will take a few minutes tops.

 

Looking a little further, (depending on the game type) I'd look at creating test environments where I can try out different mechanics in different combinations, to see what works, and see what new ideas that leads to. If you have enemies then make a test environment for each, or maybe a "menagerie" level with areas for each of them, so that you can get at them quickly to test them. I'd only look at creating actual levels, once I knew what was fun.

Link to comment
Share on other sites

On 05/08/2017 at 09:26, Colonel Panic said:

I decided to abandon OpenGL today and start working with Metal on OSX and DirectX 12 on Windows. 150 lines of code later, I've got my from scratch Metal app drawing a triangle. Now I just have a few dozen renderer classes and shaders to port then do it all over again...

 

My god why on earth would you do this! 

Link to comment
Share on other sites

2 hours ago, Colonel Panic said:

Both. I'm sick of dealing with OpenGL in my game and wanted to learn Metal out of curiosity so I branched and got stuck in!

 

its pretty much done now. 

 

Sounds good.  Out of interest, why are you having to deal with code this low level in your game?  Do you just want to use your own engine or do you have a use case that requires it?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Use of this website is subject to our Privacy Policy, Terms of Use, and Guidelines.