thebakadev

Greetings! New member looking to have a question answered.

5 posts in this topic

Posted (edited)

Hello there!

I'm a budding freelance artist and indie game developer.

Recently I've started planning a game I would like to make, and upon finding this website figured it may be beneficial to join(seeing as this is a website for game developers to come together).

I thought perhaps joining a community could help grow my knowledge in game development as well as provide a source for constructive criticism and motivation.

Now, for the moment, I have one major question;

You see, for the game I'm planning(one that I will be selling) I would like cutscenes. By cutscenes, I mean imported videos as opposed to just rendering them inside of the game engine(which...I don't know if a visual novel counts as a game engine?). Problem is, I've done a lot of research and apparently video containers/codecs like MP4(and AAC audio) require you to pay a royalty fee in order to use them in commercial work. I've checked out OGG file formats which I find horribly low-res, as well as OGV and MVK don't seem too well known for what I want. I was considering using compressed AVI formats, or even WMV and WMA files for video and audio except I think you need a license from Microsoft to do that too? I posted a question on both Microsoft's support forums and game dev forums asking about this, but am no closer to an answer as of right now. If anyone could drop me a tip or some information regarding this issue, please let me know.

In terms of my current progress in creating this game, I've been going through writing out plots, creating character and environment concepts, layout and gameplay aspects.

Any sort of advice on what my next few moves in game development should be is much appreciated, seeing as I am a newbie.

Edited by thebakadev
0

Share this post


Link to post
Share on other sites

Welcome. :)

The industry standard for pre-rendered cut scenes has long been Bink Video, but it is expensive. If you want a patent free solution that costs nothing use OGG Theora.

 

23 minutes ago, thebakadev said:

I've checked out OGG file formats which I find horribly low-res, as well as OGV and MVK don't seem too well known for what I want.

I don't know where you get that from, OGG Theora supports arbitrary resolutions up to 1048560 × 1048560. (And quality is a function of bit rate.)

And Theora has been used for cut scenes in games before.

 

32 minutes ago, thebakadev said:

Any sort of advice on what my next few moves in game development would be very much appreciated, seeing as I am a newbie.

I think you should get a playable prototype of your game before worrying about details like cut scenes. That way you can see if the game play is any good. If it isn't the rest don't matter much. 

And depending on how much of a "newbie" you are, a game that requires plots and cut scenes might be a too big of a projects. Start with something simpler.

0

Share this post


Link to post
Share on other sites

Thank you!
 

3 hours ago, kolrabi said:

The industry standard for pre-rendered cut scenes has long been Bink Video, but it is expensive. If you want a patent free solution that costs nothing use OGG Theora.

Perhaps I wasn't doing something right, but I tried converting an AVI video file and an MP4 video file into OGG format, but for some reason it came out really low quality with an odd pixel-y/blur effect and artifacts. (Or I meant low bit rate from the beginning and not resolution...forgive me, I'm really new to all of this haha). Maybe it's because I used vlc media player?? It's all that I have to try at the moment, and my main video editing software, Hitfilm 4 express, only exports files as MP4 files and AVI files.

 

3 hours ago, kolrabi said:

I think you should get a playable prototype of your game before worrying about details like cut scenes. That way you can see if the game play is any good. If it isn't the rest don't matter much. 

And depending on how much of a "newbie" you are, a game that requires plots and cut scenes might be a too big of a projects. Start with something simpler.

I want to get a playable prototype going, although I feel like I have somewhat of a mental block that I have to break with preparations first(namely basic plot and getting this whole cutscene ordeal over with). I'm also not a complete newbie. I say I am mostly due to the fact that while I have a pretty decent knowledge of branches, variables, interface programming and generally getting myself around in a game creating software, this is almost entirely graphic scripting. I want to learn a scripting language, but am first deciding what software I'll be using for this game. I want it to be a mix between a point and click game and a visual novel, but with a decent amount of freedom to learn about the in-game world and interact with various characters. I'll likely be using Tyrano Builder, which runs Javascript. No idea how easy javascript is to learn.

0

Share this post


Link to post
Share on other sites

There is a whole lot of opensource codecs, both video and audio, a quick google search will find them for you.

As for the best on that is a matter of opinion, I like x264, it's easy to build into your game so that your movie works even if the player doesn't have it installed.

3 hours ago, thebakadev said:

Any sort of advice on what my next few moves in game development should be is much appreciated, seeing as I am a newbie.

Making the movies used in cut scenes are normally done by a studio as large as the one making the game; it isn't just some simple thing any game can add.

For a indie game you should aim small, maybe one person describing the events of a world. Something that you don't need to hire hundreds of voice actors and a director.

Then there is rendering. Even if your movie renders 1 second per image it's 24 frames for one second of movie. That is 24 second = 1 second. That is 1440 frames for every minute and is half an hour fer a very fast render.

Now if we took the more realistic rendering time of 30 seconds per image, that is 15 hours per minute of movie you make.

 

In game movies have a lot less drawbacks and don't break immersion, so keep them in mind for a fallback.

0

Share this post


Link to post
Share on other sites
43 minutes ago, Scouting Ninja said:

There is a whole lot of opensource codecs, both video and audio, a quick google search will find them for you.

As for the best on that is a matter of opinion, I like x264, it's easy to build into your game so that your movie works even if the player doesn't have it installed.

Making the movies used in cut scenes are normally done by a studio as large as the one making the game; it isn't just some simple thing any game can add.

For a indie game you should aim small, maybe one person describing the events of a world. Something that you don't need to hire hundreds of voice actors and a director.

Then there is rendering. Even if your movie renders 1 second per image it's 24 frames for one second of movie. That is 24 second = 1 second. That is 1440 frames for every minute and is half an hour fer a very fast render.

Now if we took the more realistic rendering time of 30 seconds per image, that is 15 hours per minute of movie you make.

 

In game movies have a lot less drawbacks and don't break immersion, so keep them in mind for a fallback.

Huh....I'll try x264. Hopefully that will bear good results.

As for the cut scenes; Don't worry, I'm not aiming for super high quality full-length 3d animations or something like that. The cut scenes are only there to display actions and/or short events that would be difficult to portray using the default visual novel view or static images. I have a decently quick render time for my animations, and I was planning on doing either a sketchy/whimsical kind of animation, or something akin to cutouts used in puppet shows. In regards to a director and voice....I guess I kind of am the director, not to mention while I definitely can't afford to pay voice actors...at the same time, I somewhat like the idea of having the characters' voices absent so that the player can imagine what they might sound like. Especially since I want this game to be driven on the player's perspective on the world and it's inhabitants; from molding the protagonists' personality, to forming connections with the characters, to taking it upon yourself to choose how much you want to learn about them and their world(part of this probably comes from my love of an old animal crossing game I used to play. My gosh I loved that game.)

0

Share this post


Link to post
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

  • Similar Content

    • By ErnieDingo
      Before you read, apologies for the wall of text!  
      I'm looking to leverage efficiencies in DirectX 11 calls, to improve performance and throughput of my game.  I have a number of bad decisions I am going to remedy, but before I do, I am just wanting to get input into I should put effort into doing these.
      I've been running for a while with a high frame rate in my game, but as I add assets, its obviously dipping (its a bit of an n squared issue).  I'm fully aware of the current architecture, and I'm looking to take care of some severe vertex buffer thrashing i'm doing at the moment. 
      Keep in mind, the game engine has evolved over the past year so some decisions made at that time in hindsight are considered bad, but were logical at the time.
      The scenarios:
      Current: my game world is broken up by quad tree.  I'm rendering the terrain geometry and water geometry separately and in different vertex buffers.   Currently I am using Raw Draw Calls which means that I am very wasteful on computational power.  
      Goal: Use Index buffers to reduce vertices by 80%, compress my index buffers and vertex buffers into one index buffer and vertex buffer.  I can't reduce the number of draw calls as its per leaf.
      Current: Static assets such as trees etc are bound to each leaf of my quad tree, as I traverse the tree to see whats in view/out of view, I trim the leaf which in turn trims all the static assets.  This means there is an instance buffer for each node AND for each mesh.  
      Goal: Compress the instance Buffers into one instance buffer per mesh (Ie, even if 10 meshes are in 1 vertex buffer, I need 10 instance buffers), for all meshes, compress the meshes into 1 index buffer and 1 vertex buffer.  I can not reduce the number of draw calls.
      Current: My unlimited sea function reuses the same tile mesh and just remaps with a constant buffer.  This means, if there are 10 tiles, there are 10 draw calls and 10 constant buffer updates.
      Goal: Simple, Use an instance buffer and remove the constant buffer updates (I was lazy and wanted to do this quick :)).  Reduces it to 1 draw call, 1 instance buffer bind and 1 vertex buffer bind.
      Current: Each shader, i'm rebinding the same constant buffers, these buffers only change at the start of a new scene (shadow AND rendered).  
      Goal: Create a map of buffers to be bound once per context, use consistent registers.   Combine wasteful buffer structures into 1 buffer.  Reduce number of constant changes.  More negligible for deferred contexts but still worth it.
      All these changes are not difficult as I have layered my graphics engine in such a way that it doesn't disturb the lower levels.  Ie. Instance management is not bound to mesh directly, mesh management allows for compression easily.    All static buffers are set immutable in my game, so vertex, index and most index buffers are immutable.
      So the questions: 
      - Are some or all changes worth it?  Or am I going to just suffer from draw calls?  
      - I am assuming at the moment that Setting vertex buffers, index buffers, instance buffers are part of the command buffer?  Is this correct, i'm looking to reduce the number of calls pushed through it.
      - I assume in a deferred context world, that constant buffers when set are not persistent across contexts when I execute command lists.
      - Lastly, should I look into Draw Indexed instanced indirect to accumulate draw calls?  And would I get any benefit from the GPU side doing this?
       
       
       
    • By BVAaron
      Hey guys!
      l'm a passionate and published writer looking to get my hands dirty in the game dev world, collab with some cool people, and make awesome games. Story arcs, character development, dialogue creation, text editing... you name it, l'm game.
      l'm perfectly happy doing hobby projects, but if people are getting something like rev-share, i will expect compensation as well
      EXPERlENCE:
      15+ years of writing experience. l've written & edited everything from fiction to journalism to content marketing and more. But mostly fiction.
      Many of my stories have been published. You can check out my style and see if l'd be a good fit here.
      OTHER SKlLLS:
      l've done a small bit of voice-acting and would love the chance to get more into it. l've been told on occasion that i have a "good voice for reading." GENRE STRENGTHS:
      Drama, horror, mystery, suspense (big Stephen King/SOMA/Prey fan) GAME GENRE:
      While l have my favorites, l'll be happy working with any genre. Looking forward to hearing from you guys!
      -Snarky
    • By darknight78
      I have a small team together to work on an open world adventure game but we are lacking specifically anyone to do with 3D modelling. The basic concept of the game is you play as a demigod who has seen mankind grow from the bottom, up. The Gods are unhappy with the humans because there is a worldwide war that is destroying Earth. They tell the humans they are angry, and they destroy the universe but keep the demigod alive to watch everything disappear. He wakes up in a world filled with fantasy, kind of like the elder scrolls. Here, he must protect the innocent people and fulfill his duty in a prophecy.
      If you have any interest in joining the team, even if you are not a 3D designer, please email me at 78darknight87@gmail.com.
      Thanks
       
    • By Zototh
      I am using slimDX and am having a problem with a shader. I have an instance Shader that works perfect but I needed one for drawing fonts manually. The idea is to create the plane and simple instance it with separate position color and texture coordinates for each char.  I know this post is terribly long but any help would be appreciated. I tried to provide everything needed but if you need more I will be glad to post it.
      This is the shader. the only difference between it and the working one is the instance texture coordinates. I was able to render 4,000 spheres with 30,000 faces with the original and still maintain a 100+ framerate. I don't know if that is a lot but it looked like it to me.
      cbuffer cbVSPerFrame:register(b0) { row_major matrix world; row_major matrix viewProj; }; Texture2D g_Tex; SamplerState g_Sampler; struct VSInstance { float4 Pos : POSITION; float3 Normal : NORMAL; float2 Texcoord : TEXCOORD0; float4 model_matrix0 : TEXCOORD1; float4 model_matrix1 : TEXCOORD2; float4 model_matrix2 : TEXCOORD3; float4 model_matrix3 : TEXCOORD4; // this is the only addition float2 instanceCoord:TEXCOORD5; float4 Color:COLOR; }; struct PSInput { float4 Pos : SV_Position; float3 Normal : NORMAL; float4 Color:COLOR; float2 Texcoord : TEXCOORD0; }; PSInput Instancing(VSInstance In) { PSInput Out; // construct the model matrix row_major float4x4 modelMatrix = { In.model_matrix0, In.model_matrix1, In.model_matrix2, In.model_matrix3 }; Out.Normal = mul(In.Normal, (row_major float3x3)modelMatrix); float4 WorldPos = mul(In.Pos, modelMatrix); Out.Pos = mul(WorldPos, viewProj); Out.Texcoord = In.instanceCoord; Out.Color = In.Color; return Out; } float4 PS(PSInput In) : SV_Target { return g_Tex.Sample(g_Sampler, In.Texcoord); } technique11 HWInstancing { pass P0 { SetGeometryShader(0); SetVertexShader(CompileShader(vs_4_0, Instancing())); SetPixelShader(CompileShader(ps_4_0, PS())); } } this is the input elements for the 2 buffers
      private static readonly InputElement[] TextInstance = { new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0, InputClassification.PerVertexData, 0), new InputElement("NORMAL", 0, Format.R32G32B32_Float, InputElement.AppendAligned, 0, InputClassification.PerVertexData, 0), new InputElement("TEXCOORD", 0, Format.R32G32_Float, InputElement.AppendAligned, 0, InputClassification.PerVertexData, 0), new InputElement("TEXCOORD", 1, Format.R32G32B32A32_Float, 0, 1, InputClassification.PerInstanceData, 1 ), new InputElement("TEXCOORD", 2, Format.R32G32B32A32_Float, InputElement.AppendAligned, 1, InputClassification.PerInstanceData, 1 ), new InputElement("TEXCOORD", 3, Format.R32G32B32A32_Float, InputElement.AppendAligned, 1, InputClassification.PerInstanceData, 1 ), new InputElement("TEXCOORD", 4, Format.R32G32B32A32_Float, InputElement.AppendAligned, 1, InputClassification.PerInstanceData, 1 ), new InputElement("TEXCOORD", 5, Format.R32G32_Float, InputElement.AppendAligned, 1, InputClassification.PerInstanceData, 1 ), new InputElement("COLOR", 0, Format.R32G32B32A32_Float, InputElement.AppendAligned, 1, InputClassification.PerInstanceData, 1 ) }; the struct for holding instance data. 
      [StructLayout(LayoutKind.Sequential)] public struct InstancedText { public Matrix InstancePosition; public Vector2 InstanceCoords; public Color4 Color; }; instanceData buffer creation. Instance Positions is a simple List<InstancedText> above
      DataStream ds = new DataStream(InstancePositions.ToArray(), true, true); BufferDescription vbDesc = new BufferDescription(); vbDesc.BindFlags = BindFlags.VertexBuffer; vbDesc.CpuAccessFlags = CpuAccessFlags.None; vbDesc.OptionFlags = ResourceOptionFlags.None; vbDesc.Usage = ResourceUsage.Default; vbDesc.SizeInBytes = InstancePositions.Count * Marshal.SizeOf<InstancedText>(); vbDesc.StructureByteStride = Marshal.SizeOf<InstancedText>(); ds.Position = 0; instanceData = new Buffer(renderer.Device, vbDesc);  
      and finally the render code.
      the mesh is a model class that contains the plane's data. PositionNormalTexture is just a struct for those elements.
      renderer.Context.InputAssembler.InputLayout = new InputLayout(renderer.Device, effect.GetTechniqueByName("HWInstancing").GetPassByIndex(0).Description.Signature, TextInstance); renderer.Context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList; renderer.Context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(mesh.VertexBuffer, Marshal.SizeOf<PositionNormalTexture>(), 0)); renderer.Context.InputAssembler.SetIndexBuffer(mesh.IndexBuffer, SlimDX.DXGI.Format.R32_UInt, 0); renderer.Context.InputAssembler.SetVertexBuffers(1, new VertexBufferBinding(instanceData, Marshal.SizeOf<InstancedText>(), 0)); effect.GetVariableByName("g_Tex").AsResource().SetResource(textures[fonts[name].Name]); EffectTechnique currentTechnique = effect.GetTechniqueByName("HWInstancing"); for (int pass = 0; pass < currentTechnique.Description.PassCount; ++pass) { EffectPass Pass = currentTechnique.GetPassByIndex(pass); System.Diagnostics.Debug.Assert(Pass.IsValid, "Invalid EffectPass"); Pass.Apply(renderer.Context); renderer.Context.DrawIndexedInstanced(mesh.IndexCount, InstancePositions.Count, 0, 0, 0); }; I have been over everything I can think of to find the problem but I can't seem to locate it.
      my best guess is the instance data buffer is wrong somehow since VS graphics debugger shows no output from vertex shader stage
       but I just can't see where.
    • By vexe
      Greetings,
      we're making a 90s style game with prerendered backgrounds and static camera angles using a custom software-based engine (Sample WIP video)
      I was wondering what's the best way to go about setting up camera triggers. In the video I was manually switching cameras. I was thinking just OBBs (or AABBs), every camera would be associated with a bounding box, if you're in box A then camera A renders.
      - Is this a good approach or is there a better more simpler/automated way of doing it? How did old games like Resident Evil or Final Fantasy do it?
      - Doing it this way I'd have to use some sort of editor to setup the boxes. We're using Blender so I guess I could use that, although I'd prefer a more specialized editor. Is there any good 3rd party editor that's more suitable to doing this stuff? (The same editor would be used for door triggers, item/enemy spawns, text triggers etc). I thought about writing my own editor but that's a bit luxurious at the moment, I'm still setting the core things up.
      Any ideas/help is greatly appreciated
      Thanks
      -vexe