• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

100 Neutral

About Akitsune

  • Rank
  1. [media]http://www.youtube.com/watch?v=HSiFdj0nzsw[/media] Astraios is an independent online multiplayer PC game. Astraios was designed to be an immersive vast world, where you can customize your playstyle, play with friends, and change your world. Astraios is focused on giving players unique skills and an open world where players can fly to distant semi-procedural planets, explore, and compete for supremacy. The game is written in C#. I have been designing, programming, and creating visual and audio assets since I was in high school in 2009. If you're interested, [url="http://astraios.net"]check out the website[/url] or join the forums or reply here. Thanks! [img]http://astraios.net/media/3.png[/img] [img]http://astraios.net/media/4.png[/img]
  2. [quote name='DarklyDreaming' timestamp='1306665415' post='4817042'] Curious, why [i]didn't[/i] you register it? Lack of time? Money? The registration lady was being mean? I mean, taking on development for years without any registration seems a pretty stupid move - I don't know? The costs aren't all that great in the scheme of even an indie game and last I checked it only takes a few hours of filling out forms and whatever else you might need to send back and forth and voila - you're done. Personally, I'd swallow this as a "lesson learned" and move on to another name. Hardly worth launching the game only to get cease 'n' desist letter the day after over the name of all things... Anyhow, good luck with whatever you choose to do! [/quote] Yes, lack of money more or less. I never considered it a big priority seeing as how I've hardly advertised it just yet - guess this certainly is a lesson learned! I think that Terraria only registered their trademark less than a month ago and nobody grabbed up their name, so I guess I really just got the short end of the stick. [quote name='Tachikoma' timestamp='1306667583' post='4817051'] Down here in Aussie land, names distinguished only by a plural will be rejected with almost certainty, especially if its the same type of business. I'd imagine the same applies abroad, particularly in lawsuit happy countries. So yea, talk your lawyer, or get a new name. If you can't secure the original name, get the other business to make you an offer for the domain name. Who knows, they might be tempted to pay you good money for it, and in the meantime you can just move on. [/quote] That would be fantastic too and would certainly help with the new trademark costs [quote name='Hodgman' timestamp='1306643378' post='4816988'] People can [i]always[/i] sue you, no matter whether they're right or wrong. If it's just a ™ on the end of the name, you don't have to "get a trademark" - you just whack the ™ there which is publicly stating "I'm trading a product using this mark". You don't even need the ™ there for it to be a trademark, that symbol just makes your statement more explicit. If you've been operating under that name for longer than this other company, then when they sue you, you may be able to win the case... but no one really wants to fight that battle. You could also just go about your business until they send you legal threats, at which point you could rename your game to "F**** YOU ZYNGA : THE GAME"... [/quote] I have been operating under it for much longer, which makes it all the more painful. I guess I'd really like to avoid getting f***ed by this large social game ( ) company, so I probably will maintain it as a "backup blog" of sorts and adopt a new name and maybe the old domain will help me in the long run. Thanks a lot for the replies guys.
  3. [quote name='jbadams' timestamp='1306642925' post='4816986'] What does your lawyer say? If you're going in to business -- especially given you've already identified a probable legal issue -- you should speak to a lawyer. [/quote] That seems unavoidable, huh? I definitely don't have the money for that just yet.
  4. I've been working on my indie RPG project for a few years with the ultimate goal of monetization and it looks like I could be ready for launch by the end of the year. My excitement has been through the roof lately. Unfortunately, I've just now checked and it appears a certain large social game development company has trademarked the name of my project (however, mine is plural and theirs is singular) last year. Considering how both of our projects are definitely "computer video game software", I don't think getting a trademark of my own of the pluralization would work. I'm a bit afraid to release my project as well - they could probably sue me even though I've had the domain name for years! What's the best plan here - find a new name & domain ( ) while of course still keeping this one just in case or try and get a trademark?
  5. In addition (or instead) of these A* adaptations, you should think about this method that Richard Geslot elaborates on. Instead of using a grid, a moving object drops "stones" that, when vision of the target is lost, the stones are used to follow the target. Rather than 2d point stones, you could easily use 3d points. To add to the technique, you could even try extrapolating the position of the 2 most recent stones - and predicting the future position of a spaceship and moving there.
  6. Quote:Original post by Ashaman73 Maybe there's an issue with your fullscreen "quad". It looks like rendering two triangles. When your source and target renderbuffer are the same(is it possible in DX ?), you will get an error. Brilliant! Here's what I changed in the render code (not in anything shader related) Original: SurfaceBlur.StartRender(false); TV2D.Action_Begin2D(); TV2D.Draw_FullscreenQuadWithShader(ShaderBlurX, 0, 0, 1, 1, SurfaceRender.GetTexture()); TV2D.Draw_FullscreenQuadWithShader(ShaderBlurY, 0, 0, 1, 1, SurfaceBlur.GetTexture()); TV2D.Action_End2D(); SurfaceBlur.EndRender(); Fixed: SurfaceBlur0.StartRender(false); TV2D.Action_Begin2D(); TV2D.Draw_FullscreenQuadWithShader(ShaderBlurX, 0, 0, 1, 1, SurfaceRender.GetTexture()); TV2D.Action_End2D(); SurfaceBlur0.EndRender(); SurfaceBlur1.StartRender(false); TV2D.Action_Begin2D(); TV2D.Draw_FullscreenQuadWithShader(ShaderBlurY, 0, 0, 1, 1, SurfaceBlur0.GetTexture()); TV2D.Action_End2D(); SurfaceBlur1.EndRender(); Thanks a ton for your help - I was at my wit's end.
  7. I've been working on porting my ORPG to 2D and have this painful issue with my blur. There's a giant artifact that stretches across the screen quad - it looks like a diagonal line from UV(1, 1) to UV(0, 0). Of course, it only shows up in my blur. Sampling just the world doesn't have this artifact. I tried not downsampling my blur and I still get the artifact. I've exaggerated the blur to show you the artifact. http://img687.imageshack.us/i/18979256.jpg/ ////////////////////////////////////////////////// // // BlurX // ////////////////////////////////////////////////// float Pixel; texture Texture0:TEXTURE0; sampler2D Sampler0 = sampler_state { texture = (Texture0); MIPFILTER = LINEAR; MAGFILTER = LINEAR; MINFILTER = LINEAR; ADDRESSU = CLAMP; ADDRESSV = CLAMP; }; struct IN0 { float4 Position : POSITION; float2 UV : TEXCOORD0; }; struct OUT0 { float4 Position : POSITION; float2 UV : TEXCOORD0; }; OUT0 VS(IN0 IN) { OUT0 OUT; OUT.Position = IN.Position; OUT.UV = IN.UV; return OUT; } float4 PS(OUT0 IN) : COLOR { float2 UV = IN.UV; float4 RGBA = tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); UV.x -= Pixel * 8; RGBA += tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); UV.x += Pixel; RGBA += tex2D(Sampler0, UV); RGBA /= 9; return RGBA; } technique T0 { pass P0 { VertexShader = compile vs_2_0 VS(); PixelShader = compile ps_2_0 PS(); } } ////////////////////////////////////////////////// // // Render // ////////////////////////////////////////////////// float time : TIME; float2 BlurPixel; float2 BlurCenter; texture Texture0:TEXTURE0; sampler2D Sampler0 = sampler_state { texture = (Texture0); MIPFILTER = LINEAR; MAGFILTER = LINEAR; MINFILTER = LINEAR; ADDRESSU = CLAMP; ADDRESSV = CLAMP; }; texture Texture1:TEXTURE1; sampler2D Sampler1 = sampler_state { texture = (Texture1); MIPFILTER = LINEAR; MAGFILTER = LINEAR; MINFILTER = LINEAR; ADDRESSU = CLAMP; ADDRESSV = CLAMP; }; struct IN0 { float4 Position : POSITION; float2 UV : TEXCOORD0; }; struct OUT0 { float4 Position : POSITION; float2 UV : TEXCOORD0; }; OUT0 VS(IN0 IN) { OUT0 OUT; OUT.Position = IN.Position; OUT.UV = IN.UV; return OUT; } float4 PS(OUT0 IN) : COLOR { float2 UV = IN.UV; float4 RGBA = tex2D(Sampler0, UV); float4 Blur = tex2D(Sampler1, IN.UV + BlurPixel); float2 BlurDistance = IN.UV - BlurCenter; float BlurStrength = min(4 * dot(BlurDistance, BlurDistance), 1); RGBA = lerp(RGBA, Blur, BlurStrength); RGBA = max(Blur - 0.95f, 0) * 1.0f + RGBA; float2 CenterDistance = IN.UV - float2(0.5f, 0.5f); float VignetteStrength = 1.0f - dot(CenterDistance, CenterDistance); RGBA *= VignetteStrength; return RGBA; } technique T0 { pass P0 { VertexShader = compile vs_2_0 VS(); PixelShader = compile ps_2_0 PS(); } } Any ideas are appreciated :)
  8. I'm by no means the world's greatest texture artist, but I use tools like Genetica in combination with photoshop to create some pretty kickarse textures. Procedural texture synthesis is, in my opinion, the best alternative to photography.
  9. Brilliant! Certainly sounds like a useful technique.
  10. I've been writing a physics engine (okay, you can BARELY call it that) which supports AABB collision, gravity, friction, and bouncing. It's in 2D and very simplistic. I would use Box2D's C# port or something but this is much more efficient, and I plan on using this with 10+ scenes running at the same time. It works well for the most part, but my problem is that when 2+ boxes collide at such a velocity, rather than falling, they slide along in the middle of the air horizontally until they separate. This is pretty unrealistic and unacceptable. Friction method: protected Single CalculateFriction(Single NewVelocity) { if (NewVelocity > Scene.Friction) { return (NewVelocity - Scene.Friction * Scene.Timestep); } else { if (NewVelocity < -Scene.Friction) { return (NewVelocity + Scene.Friction * Scene.Timestep); } else { return 0; } } } This is the update code: //bounds update / check for collision / bounce gets run first, for efficiency's sake I'm not going through the list twice, could this be a problem? Position = Position + Velocity * Scene.Timestep; if (Gravity == true) { Velocity.Linear.Y += ObjectWorld.GravityStrength; } Velocity.Linear.Length = CalculateFriction(Velocity.Linear.Length); This gets run whenever there's a collision: public void Bounce(Physics Other) { Vector Normal; Single d0 = Other.Corner[1].X - Corner[0].X; Single d1 = Corner[1].X - Other.Corner[0].X; Single Depth = (d0 < d1) ? d0 : -d1; bool Axis = false; d0 = Other.Corner[1].Y - Corner[0].Y; d1 = Corner[1].Y - Other.Corner[0].Y; Single d = (d0 < d1) ? d0 : -d1; if (Math.Abs(d) < Math.Abs(Depth)) { Depth = d; Axis = true; } Single DepthSquared = Depth * Depth; if (Axis == false) { Normal = new Vector(Depth, 0); } else { Normal = new Vector(0, Depth); } Single OldVelocity = Velocity.Linear.Length; Single OldOtherVelocity = Other.Velocity.Linear.Length; if (Axis == false) { Velocity.Linear = new Vector(Normal.X, CalculateFriction(Velocity.Linear.Y)); } else { Velocity.Linear = new Vector(CalculateFriction(Velocity.Linear.X), Normal.Y); } Single NewVelocity = ((OldVelocity - OldOtherVelocity) * Scene.Restitution * Other.Mass + Mass * OldVelocity + Other.Mass * OldOtherVelocity) / (Mass + Other.Mass); Velocity.Linear.Length = NewVelocity; if (Velocity.Linear.Y < ObjectWorld.GravityStrength && Other.Velocity.Linear.Y > 0 && DepthSquared < Scene.DepthTolerance) { Velocity.Linear.Y = 0; } if (Other.Movable == true) { if (Axis == false) { Other.Velocity.Linear = new Vector(-Normal.X, CalculateFriction(Other.Velocity.Linear.Y)); } else { Other.Velocity.Linear = new Vector(CalculateFriction(Other.Velocity.Linear.X), -Normal.Y); } Single NewOtherVelocity = ((OldOtherVelocity - OldVelocity) * Scene.Restitution * Mass + Mass * OldVelocity + Other.Mass * OldOtherVelocity) / (Mass + Other.Mass); Other.Velocity.Linear.Length = NewOtherVelocity; if (Other.Velocity.Linear.Y < ObjectWorld.GravityStrength && Other.Velocity.Linear.Y > 0 && DepthSquared < Scene.DepthTolerance) { Other.Velocity.Linear.Y = 0; } } } I don't seriously expect anyone to go through all that code, so even any tips would be nice. I have a sneaking suspicion that this is a frictional issue, but it might not be. Thanks! EDIT: Oops, slight miscalculation in friction method [Edited by - Akitsune on October 5, 2010 10:23:04 AM]
  11. You guys all understood the problem perfectly, thanks! Rather than using your solution, davepermen, I'm using virtual and override (but your example proved that my question about bool Open is possible).
  12. Quote:Original post by Valkoran Why do you think that you would need to create a list for each new class derived from Node? Maybe I don't properly understand the List generic. I was under the impression that by making a Wall : Node class and a Door : Node class I wouldn't be able to store both within a List<Node>. I assume I am incorrect? What if Door had an extra property, bool Open?
  13. I've been working on a C# project for a while now and have been running into some problems with my object model. My world has online persistence and uses a serialization library, which just adds more complication to the whole situation. My current model is that all objects fall into some very brief categories, the most troublesome being my node category. Nodes are grid-aligned, collision affecting entities with a non-static string property representing 3d model path. This means that every single Node can have a different 3d model. Nodes are intended to be used in a similar fashion to structures, doodads, and destructibles in the WC3 editor. My nodes feel VERY weakly typed (I know this isn't the proper term). The alternative (and arguably proper way) is to make a class derived from Node, but this also can be a pain to do. I would presumably need a List generic for each new class, right? Considering how many new classes (50+) I would be implementing, this seems counter-intuitive. Is there a better way to organize my objects? An ID-based system, perhaps?
  14. I agree with everything mokaschitta said! It looks really interesting. I'm pretty interested in your painterly effect - when your camera moves, does the screen still "pop", or did the weighted luminance fix it? I'd imagine that would be a very neat effect, but very hard on the eyes if it pops too much. Also, even though I know it's not physically accurate - have you tried using the bokeh in a different way? It'd be very cool to see something this applied to a SSAO pass.
  15. Wow, nice! I can't believe I'm never seen that iterative parallax paper before - great find! [Edited by - Akitsune on June 10, 2010 9:46:48 PM]