Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (477)
Games in Android Showcase (107)
games submitted by our members
Games in WIP (534)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Caelum Engine  (Read 3339 times)
0 Members and 1 Guest are viewing this topic.
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Posted 2014-03-23 21:46:12 »

Thanks go to Spacebeans for the banner

The Caelum Engine is, in a nutshell, my attempt at making a game engine. Its goal is to support:

  • Any dimension (2D, 3D, both)
  • Most any internal architecture design
  • Any type of game (FPS, RTS, w/e)
  • On any platform (Android, PCs, others)

Currently it is a heavy WIP, and not yet usable for developing a game, but it'll get there.


Planned features include (For now):

  • Rendering (2D, 3D, with lighting)
  • Physics (2D, 3D, perhaps with Box2D and/or JBullet support)
  • Input (Mouse, keyboard, with room for more)
  • Sound
  • Networking
  • Pretty much anything else a game needs Tongue


My current To-do list currently consists of:

  • Properly integrating the asset system into the rest of the engine
  • Implementing proper model support
  • Writing a JBullet port; Will mostly consist of refactoring it to use Caelum's math package
  • Implementing lighting


You can find its GitHub repo right here
There is now an IRC channel: #caelumengine at EsperNet

Documentation, tutorials, etc. are coming soon, so feedback is important.
Offline saucymeatman
« Reply #1 - Posted 2014-03-23 22:36:49 »

Will it have physics? If so, Box2D or custom?
Java2D or a opengl port? If openGL, which port?

Supporting all platforms and all game types is ambitious.
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #2 - Posted 2014-03-23 22:52:20 »

Will it have physics? If so, Box2D or custom?
Java2D or a opengl port? If openGL, which port?

Supporting all platforms and all game types is ambitious.

Yes, physics are a must for both 2d and 3d, and I might just use Box2d.

Java2d will be supported via a custom game environment, but natively, OpenGL all the way. Because the 3d portion of the engine uses it, I'll use the programmable pipeline. It's more difficult to work with, but it beats writing support for two different OpenGL versions.

Yes, yes it is.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline JVallius
« Reply #3 - Posted 2014-03-24 08:49:33 »

How this differ from Unity?
Offline Danny02
« Reply #4 - Posted 2014-03-24 08:55:18 »

Unity is a full blow commercial game engine with tons of features,
this is a 1 month hobby project. Emo
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #5 - Posted 2014-03-24 08:58:52 »

Unity is a full blow commercial game engine with tons of features,
this is a 1 month hobby project. Emo

9 months, actually; I did a lot of mind changing. Tongue

But mine is open source, so there's that.
Offline gouessej
« Reply #6 - Posted 2014-03-24 12:48:51 »

Hi

I don't see the interest of creating another engine alone except for pedagogical purposes. LibGDX already does what you claim your engine will do. Good luck.

Offline MiningMark48

Junior Newbie


Medals: 1



« Reply #7 - Posted 2014-03-24 20:44:51 »

This is just a what is expected to come now. This isn't functional yet. When it is, it will do way more than is expected. It has a great potential!  I feel this engine will go far with game development. Good job, Elusivehawk.
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #8 - Posted 2014-03-25 03:14:57 »

Hi

I don't see the interest of creating another engine alone except for pedagogical purposes. LibGDX already does what you claim your engine will do. Good luck.

In part, I did make this to learn more about what goes into programming a game; But personally, I don't really care that much for LibGDX.




Update: I'm going to put a to-do list in the OP; My current priorities include finishing the asset system, implementing lighting, and creating a JBullet wrapper/port, in that order.
Offline HeroesGraveDev

JGO Kernel


Medals: 238
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #9 - Posted 2014-03-25 04:21:29 »

My advice: Don't wrap for the sake of wrapping.
Provide some new functionality. Don't just give the user a whole new load of classes to use that simply call a method in some other library.

Secondly, don't duplicate functionality that already exists. Some of your classes could easily be replaced with already existing ones, even within the libraries which you're using, yet for some reason you're providing half-baked implementations. Sometimes it's nice to have simplicity of course, but if something exists that perfectly does your job, why go and make something that doesn't and use that instead?

With those two in mind, the following is a bad idea:
Quote
Writing a JBullet port; Will mostly consist of refactoring it to use Caelum's math package

Finally, if you're expecting other people to use your code, stick to standards. Your
SimpleList
does not fulfill the requirements of the
List
interface. Note the following:
Quote
E remove(int index)

Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.
Replacing it with null is not removing.

Other than those few things, this looks decent. I went into the code expecting some newbie making a library for things they don't even understand, but was surprised to find you for the most part know what you're doing. (No offense, but when someone says they're making a library that supports 'all types of game', that turns on warning bells)

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #10 - Posted 2014-03-25 06:16:56 »

Secondly, don't duplicate functionality that already exists. Some of your classes could easily be replaced with already existing ones, even within the libraries which you're using, yet for some reason you're providing half-baked implementations. Sometimes it's nice to have simplicity of course, but if something exists that perfectly does your job, why go and make something that doesn't and use that instead?

The LWJGL package is just a game environment, and as such, is meant to be compartmentalized from the rest of the engine. Also, having my own Matrix and Vector classes enables me to implement features into them on a need-to basis, not to mention LWJGL's implementations can't be iterated through.


With those two in mind, the following is a bad idea:
Quote
Writing a JBullet port; Will mostly consist of refactoring it to use Caelum's math package

The reason why I'll have my port of JBullet use my math package, aside from including it in the above Vector features, is because I encountered a good deal of errors (~1200, IIRC) the last time I gave porting it a shot not that that long ago, and a fair amount of said errors were caused by a lack of a Vector3f class.


Finally, if you're expecting other people to use your code, stick to standards. Your
SimpleList
does not fulfill the requirements of the
List
interface. Note the following:
Quote
E remove(int index)

Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.
Replacing it with null is not removing.

Now, things like SimpleList have a flaky implementation, I won't bother denying it; It's just that I spend my time in some areas for some time, then move on; As a result, some things have been given a "bandage" implementation. I'll fix SimpleList in particular ASAP.


Other than those few things, this looks decent. I went into the code expecting some newbie making a library for things they don't even understand, but was surprised to find you for the most part know what you're doing. (No offense, but when someone says they're making a library that supports 'all types of game', that turns on warning bells)

None taken; I've spent a lot of time working on this engine, so it's good to know that I did it remotely correct.


With that said, thank you for taking the time to reply; It means a lot to me.
Offline HeroesGraveDev

JGO Kernel


Medals: 238
Projects: 11
Exp: 2 years


┬─┬ノ(ಠ_ಠノ)(╯°□°)╯︵ ┻━┻


« Reply #11 - Posted 2014-03-25 06:19:54 »

What's wrong with just including the JBullet libs and then wrapping them for whatever functionality you want to add?

Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #12 - Posted 2014-03-25 06:52:33 »

What's wrong with just including the JBullet libs and then wrapping them for whatever functionality you want to add?

Strictly from a "Making new Vectors to wrap around the different Vector classes libraries X and Y use" stance:

  • It'll waste memory, on something people already use pooling to help curb.
  • It'll probably mean more wrapping, or pooling (To keep the new Caelum Vectors consistent)
  • Or, just plain inconvenience on the part of the game programmer.

Now, again, some of this could be mitigated by using pooling, but not only would that be completely inappropriate for certain Caelum Vector features (Looking at you, IVectorListener), but it'll also be difficult to manage given Vector's type casting. EDIT: I took out that stupid type casting, but I'm still not pooling my vectors just yet.

Also, it seems that JBullet out of the box is somewhat reliant on LWJGL, which probably won't end well if you're using Android.
Offline gouessej
« Reply #13 - Posted 2014-03-25 11:12:44 »

In part, I did make this to learn more about what goes into programming a game; But personally, I don't really care that much for LibGDX.
Ok, that's what I meant by "pedagogical purposes" but don't expect tons of developers will use your engine especially if it provides no new feature and if it is less documented than existing engines, that's why I talked about LibGDX. When I started 3D in Java, I used a 3D engine written by an artist (d3caster) and as far as I know, his source code was under GPL and I was the only guy who used his engine for a public project. Even Ardor3D is used only by at most tens of developers.

I looked at your source code, I agree with most HeroesGraveDev's remarks and for the moment, there aren't a lot of comments.

Offline 65K
« Reply #14 - Posted 2014-03-25 20:56:33 »

Do you develop a game side by side with the engine ?

Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #15 - Posted 2014-03-26 04:31:06 »

Ok, that's what I meant by "pedagogical purposes" but don't expect tons of developers will use your engine especially if it provides no new feature and if it is less documented than existing engines, that's why I talked about LibGDX. When I started 3D in Java, I used a 3D engine written by an artist (d3caster) and as far as I know, his source code was under GPL and I was the only guy who used his engine for a public project. Even Ardor3D is used only by at most tens of developers.

I looked at your source code, I agree with most HeroesGraveDev's remarks and for the moment, there aren't a lot of comments.

Okay, but I'm going to stay optimistic nonetheless.


Do you develop a game side by side with the engine ?

I used to, to the point where it was in the game's repository for its first 3 months. Now I'm working on it until it's in a usable state, afterwards I'm going to do just that once again.
Offline gouessej
« Reply #16 - Posted 2014-03-26 10:01:01 »

Okay, but I'm going to stay optimistic nonetheless.
What do you mean exactly? Other famous engines have a lot more very experienced contributors, especially JMonkeyEngine and LibGDX, don't expect to succeed in competing with them alone especially if you don't have a lot of experience but you can and you will probably learn tons of things by writing your own engine.

Online SHC
« Reply #17 - Posted 2014-03-26 10:38:58 »

Hey you have this code in
RenderTicket.java#L53


1  
vbo = new VertexBufferObject(GLConst.GL_VERTEX_ARRAY, this.buf, GLConst.GL_STREAM_DRAW);

Should that use
GL_ARRAY_BUFFER
instead of
GL_VERTEX_ARRAY
?

Just a doubt.

Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #18 - Posted 2014-03-26 11:23:08 »

Hey you have this code in
RenderTicket.java#L53


1  
vbo = new VertexBufferObject(GLConst.GL_VERTEX_ARRAY, this.buf, GLConst.GL_STREAM_DRAW);

Should that use
GL_ARRAY_BUFFER
instead of
GL_VERTEX_ARRAY
?

Just a doubt.

Well, after looking at the relevant code, and OpenGL's docs, I question how on Earth that constant got there in the first place; I've already pushed a commit to fix it, and I thank you for bringing it to light.
Offline MiningMark48

Junior Newbie


Medals: 1



« Reply #19 - Posted 2014-03-28 11:49:21 »

This engine has so much to come and it is really amazing. It may not be usable now but when it is, it will be offering a lot. I can see you have put a lot of time making this day after day to make a new type of engine that work well and easy to use. This game engine is just the beginning to an all new gaming experience. Elusivehawk has put crazy amounts of time into this as far as I can tell. He is doing a wonderful job. Great job Elusivehawk!
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #20 - Posted 2014-03-28 12:13:24 »

So how well do you know ElusiveHawk MiningMark...?

Offline MiningMark48

Junior Newbie


Medals: 1



« Reply #21 - Posted 2014-03-29 00:01:18 »

So how well do you know ElusiveHawk MiningMark...?

What? I was just trying to help the guy...
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #22 - Posted 2014-03-29 01:47:51 »

...I won't even bother asking about the above, but since I'm already here: Assets are somewhat finished. However, I will need to restructure how game entities are rendered before finalizing the materials system, so if you have a request in that regard, now is the time to ask.
Offline saucymeatman
« Reply #23 - Posted 2014-03-29 01:57:35 »

So how well do you know ElusiveHawk MiningMark...?

What? I was just trying to help the guy...
Your praise was overboard a little haha.

Not to say this engine is unworthy of praise, I think its really cool (although remarkably ambitious). Its disappointing to see replies that advise Elusive to not stay optimistic that his engine one day might be used by many developers.

It would be cool to see code examples or maybe a demo in the thread Smiley
Offline opiop65

JGO Kernel


Medals: 153
Projects: 7
Exp: 3 years


JumpButton Studios


« Reply #24 - Posted 2014-03-29 02:59:19 »

I had no intention of belittling your engine Elusive, it just almost seems like Mining over there knows you or something Tongue I mean no offense but we both know your engine isn't at all complete yet, the praise just seemed a little much...

Offline pitbuller
« Reply #25 - Posted 2014-03-29 03:51:41 »

Engine without game/s that drives it development and test it functionality/usability/flexibility never hit the goal. Writing engines is fun and I even do that as living but I would never create yet another open source over general engine.
Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #26 - Posted 2014-03-29 05:17:20 »

-snip- Its disappointing to see replies that advise Elusive to not stay optimistic that his engine one day might be used by many developers.

It would be cool to see code examples or maybe a demo in the thread Smiley

Yeah, "Silly Hats Only" Syndrome seems to be somewhat rampant on the Internet, which is a bit of a "chicken and the egg" scenario when you stop and think about it.

I'll see what I can do for code examples, though they may have to come with a new launch system.


I had no intention of belittling your engine Elusive, it just almost seems like Mining over there knows you or something Tongue I mean no offense but we both know your engine isn't at all complete yet, the praise just seemed a little much...

Didn't think you were, and I do know him; He just likes to "help". Although, to be fair, sometimes he is genuinely helpful.


Engine without game/s that drives it development and test it functionality/usability/flexibility never hit the goal. Writing engines is fun and I even do that as living but I would never create yet another open source over general engine.

Well, once the core features are up and usable (Like some form of rendering, physics, sound, etc.), I'll probably start developing a game to do just that. For now though, IMHO, creating a game for this engine would only halt progress, unless it's rather small.
Offline 65K
« Reply #27 - Posted 2014-03-29 09:59:14 »

Engine without game/s that drives it development and test it functionality/usability/flexibility never hit the goal.
That was the intention of my question.
You don't build no (good) frameworks, libraries or game engines without actual use cases. Plural is important here. It does not hinder progress, but does the opposite.
Anyway, have fun.

Offline Elusivehawk

Junior Member


Medals: 1
Projects: 1



« Reply #28 - Posted 2014-04-19 23:22:38 »

Just a quick update: I've implemented material support, written my own JSON parser, broke up the launch process in order to comply with Android's activity lifecycle, and I will begin writing a series of tutorials soon.

Also, what should I work on next? I know I have a TODO list, but I'm going to re-prioritize it, simply because you can't have much of a game without sound, or physics, or even a little HUD telling you, "You're dying!"
Pages: [1]
  ignore  |  Print  
 
 

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

pw (35 views)
2014-07-24 01:59:36

Riven (33 views)
2014-07-23 21:16:32

Riven (21 views)
2014-07-23 21:07:15

Riven (24 views)
2014-07-23 20:56:16

ctomni231 (55 views)
2014-07-18 06:55:21

Zero Volt (47 views)
2014-07-17 23:47:54

danieldean (38 views)
2014-07-17 23:41:23

MustardPeter (43 views)
2014-07-16 23:30:00

Cero (59 views)
2014-07-16 00:42:17

Riven (56 views)
2014-07-14 18:02:53
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!