• 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

595 Good

About codemonster

  • Rank
  1. Have a look at Tiffany Smith's nice Tetris clone AsciiRis which runs in a console window. The archive contains a vc6 project, the source, and an executable. [smile] The Win32 function you're looking for is probably SetConsoleTextAttribute() Taken from Sprites, sprites and more sprites!
  2. Mersenne Twister Random Number Generator fast, convenient, portable, and free [smile] What is it? A C++ implementation with various functions for easy use by Richard Wagner: MTRand Almost twice as fast as the original Wagner's C++ code using Pentium MMX instruction by Matthew Bellew: MMXRand The links have been taken from Makoto Matsumoto's list with various C/C++ versions of the Mersenne Twister: Overview c/c++ list
  3. Quote:Original post by JohnBSmall math3d++ provides the normal matrix, vector and quaternion classes, and their associated operations. BMF_Font bitmap font library (and font texture generator) Here's a small update: Trenki's site (math3d++, BMF_Font) has moved. The new url is http://trenki.al.msshost.com Accordingly his libraries can be found at: math3d++ BMF_Font
  4. first of all: great list, Kylotan! thank you very much for your efforts! and, of course, thanks to everyone else who has contributed so far [smile] i've also been working on a similar, small list (mainly for personal use) but i havent updated it for quite a while. it is by far neither as nice designed nor as good categorized as your list but maybe you want to have a look nonetheless, as there may be some further libraries etc. :)
  5. Indeed, the Opcode docs are awful. The Open Dynamics Engine uses Opcode optionally. Download the ODE source and have a look into the file named collision_trimesh.cpp. Here's a small example using Opcode 1.3 I wrote earlier this year. It's by far not complete (and there may be bugs), but it worked and I didnt need more functionality at the time. The Opcode parts/classes you are looking for either begin with Opcode:: or uppercase letters. All the lowercased classes etc. are from my project and shouldnt really bother you. Header: namespace coll { class c_triangle_manager : public i_triangle_manager { public: c_triangle_manager( scene::i_mesh* mesh, const math::c_matrix* transformation ); virtual ~c_triangle_manager(); virtual bool get_colliders( const math::t_spheref& sphere, Opcode::SphereCache& cache, Opcode::SphereCollider& collider ); virtual bool get_colliders( const math::t_aabb3df& box, Opcode::AABBCache& cache, Opcode::AABBCollider& collider ); virtual bool get_colliders( const math::c_ray& ray, Container& container, Opcode::RayCollider& collider ); d_forceinline virtual const math::t_aabb3df& get_bounding_box() const { return m_bbox; } d_forceinline virtual const std::vector < Point >& get_vertices() const { return m_list_of_vertices; } d_forceinline virtual const std::vector < IndexedTriangle >& get_indexed_triangles() const { return m_list_of_triangles; } private: math::t_aabb3df m_bbox; Opcode::Model m_model; Opcode::MeshInterface m_imesh; std::vector < Point > m_list_of_vertices; std::vector < IndexedTriangle > m_list_of_triangles; }; } Implementation: namespace coll { c_triangle_manager::c_triangle_manager( scene::i_mesh* mesh, const math::c_matrix* transformation ) { debug_assert( mesh ); size_t idx_count = 0; m_bbox.reset( 0.1f, 0.1f, 0.1f ); t_u32 count = mesh->get_submesh_count(); for ( t_u32 idx = 0; idx < count; ++idx ) { scene::i_submesh* buffer = mesh->get_submesh( idx ); if ( buffer ) { vid::s_vertex_data& vertex_data = buffer->get_vertex_data(); vid::s_index_data& index_data = buffer->get_index_data(); t_s32 vertex_count = vertex_data.get_vertex_count(); t_s32 index_count = index_data.get_index_count(); t_u16* indices = index_data.get_index_pointer(); math::t_vector3f* vertices = vertex_data.get_vertex_pointer(); debug_assert( vertices ); t_u32 i0, i1, i2; Point pt; math::t_vector3f v; size_t i; for ( i = 0; i < index_count; i+=3 ) { i0 = indices[ i + 0 ]; i1 = indices[ i + 1 ]; i2 = indices[ i + 2 ]; v = vertices[ i0 ]; m_bbox.insert( v ); pt.x = v.x; pt.y = v.y; pt.z = v.z; m_list_of_vertices.push_back( pt ); v = vertices[ i1 ]; m_bbox.insert( v ); pt.x = v.x; pt.y = v.y; pt.z = v.z; m_list_of_vertices.push_back( pt ); v = vertices[ i2 ]; m_bbox.insert( v ); pt.x = v.x; pt.y = v.y; pt.z = v.z; m_list_of_vertices.push_back( pt ); m_list_of_triangles.push_back( IndexedTriangle( idx_count+0, idx_count+1, idx_count+2 ) ); idx_count+=3; } } } m_imesh.SetNbTriangles( m_list_of_triangles.size() ); m_imesh.SetNbVertices( m_list_of_vertices.size() ); if ( !m_imesh.SetPointers( &m_list_of_triangles[ 0 ], &m_list_of_vertices[ 0 ] ) ) { // TODO } udword degenerate = m_imesh.CheckTopology(); if ( degenerate ) { // TODO } Opcode::OPCODECREATE opcc; opcc.mIMesh = &m_imesh; opcc.mNoLeaf = true; opcc.mQuantized = true; //opcc.mCollisionHull = false; opcc.mKeepOriginal = false; opcc.mCanRemap = true; if ( !m_model.Build( opcc ) ) { // TODO } } c_triangle_manager::~c_triangle_manager() { } bool c_triangle_manager::get_colliders( const math::t_spheref& sphere, Opcode::SphereCache& cache, Opcode::SphereCollider& collider ) { Point center( sphere.center.x, sphere.center.y, sphere.center.z ); Sphere s( center, sphere.radius ); return collider.Collide( cache, s, m_model ); } bool c_triangle_manager::get_colliders( const math::t_aabb3df& box, Opcode::AABBCache& cache, Opcode::AABBCollider& collider ) { Point min; min.x = box.min.x; min.y = box.min.y; min.z = box.min.z; Point max; max.x = box.max.x; max.y = box.max.y; max.z = box.max.z; AABB aabb; aabb.SetMinMax( min, max ); return collider.Collide( cache, aabb, m_model ); } bool c_triangle_manager::get_colliders( const math::c_ray& ray, Container& container, Opcode::RayCollider& collider ) { Point origin; origin.x = ray.origin.x; origin.y = ray.origin.y; origin.z = ray.origin.z; Point direction; direction.x = ray.normal.x; direction.y = ray.normal.y; direction.z = ray.normal.z; Ray opray( origin, direction ); return collider.Collide( opray, m_model ); } } Usage: i removed some parts in the following code snippet to make the usage clearer... math::t_vector3f position; math::t_spheref sphere; Opcode::SphereCache cache; Opcode::SphereCollider collider; coll::i_triangle_manager* tmgr; // removed code for clarity if ( tmgr ) { sphere.center.set( position.x, position.y, position.z ); sphere.radius = m_bsphere_radius; bool result = tmgr->get_colliders( sphere, cache, collider ); if ( result ) { udword nbtouched = collider.GetNbTouchedPrimitives(); if ( nbtouched ) { // even more removed code... } } } This really isnt the best or cleanest example that was ever created, so please use with care. But I hope it helps anyway...
  6. *wow* all your pics are awesome! that's really impressive!!! i only have a few photos to post, nothing special, but what the heck...
  7. the chimp rocks! and i bet his name is Guenter! Quote:Original post by Tron3k I could kick that chimp's ass. hmmm, that makes me wonder... where's Doogle? [grin]
  8. Quote:Original post by boolean especially codemonster with his 21 submissions [smile] hell on earth, what was i thinking?!? [smile] thank you very much for your efforts, boolean! and thanks to everybody else btw! all those master chief revelations are just awesome! [grin] tgif! have a great weekend, everyone!
  9. Quote:Original post by Myopic Rhino There are obviously many different ways to have fun. Some of them, though fun for those involved, are exactly the opposite for others. that's the good thing about fun, isnt it? Quote:Original post by Myopic Rhino There are significant differences between a company breakroom and the Lounge. In the breakroom (or any other real-world location) certain societal codes of conduct come in to play. yep, i totally agree. Quote:Original post by Myopic Rhino For instance, are you likely to encouter someone in a real breakroom intermittently yelling "HITLAR"? no, of course not. especially here in germany they smash your head on the pavement, turn you inside out, and sweep the streets with the rest of your body if you even think about thinking about maniacs like hitler. but still, it's kinda amusing making fun of hitler because he was such a freak. as i said, do what you have to do. it's your site and your responsibility. after all, the anti-lounge-people will blame it on you if something's fishy within the forums. please excuse my bad and simple english...
  10. Quote:Original post by Boris Karloff Frak! But I still want to know why codemonster was searching for Buzz Lightyear pics. lol. i almost anticipated that mentioning Buzz Lightyear in a Whoa-Look-At-All-Those-Hotties Thread would bring up some unanswered questions. i was searching for Buzz Lightyear because of the Master Chief revelation thread. so, there's another mystery revelead. Quote:Original post by Oluseyi The Lounge is exerting too much of a pull on this site right now, and we consider this state of affairs unacceptable. There are far too many members who only visit the Lounge, and only post inane material. This will stop. Our purpose is game development, and this "reining in" is intended to reinforce this fact. imo this site is pretty good already and quite serious about game development. i dont care much about the hottie thread or whatsoever. (but still, it wasnt pr0n or total crap after all, was it?). so that's not the point. but i dont get why you want to ban all the fun from game development? isnt this what the lounge is (or better: was) for? the game companies i worked for always had one fun room where all the ppl could meet up, gather, play games, hang out, relax, eat, watch movies, talk about total rubbish... well, just pretty much as the lounge. do what you have to do, but please, dont take the fun from gdnet. that would be a bummer. having fun is and always was a necessity in game development. well, just my two cents...
  11. Quote:Original post by Anna He's watching you... well, guess again! [smile]
  12. also 12111
  13. Quote:Original post by WanMaster Quote:Original post by codemonster must... take... stupid... helmut... off... The helmet wasn't the piece of clothing I was hoping for to come off... *drumrolls*
  14. Quote:Original post by GroZZleR must... take... stupid... helmut... off...