Jump to content
curiosity

[WIP] Native Ragnarok Client

Recommended Posts

To settle the question of open source once and for all: I'm planning to release the full source code sometime in the future. When the code is released, anyone who wishes to do so will be free to fork the project, add renewal features, organize their own development teams and whatever. As I've already stated, I will not be interested in collaboration. I will release when I've reached my milestone for feature completion, and this will be the first and final release.

  • Upvote 7
Link to comment
Share on other sites

To settle the question of open source once and for all: I'm planning to release the full source code sometime in the future. When the code is released, anyone who wishes to do so will be free to fork the project, add renewal features, organize their own development teams and whatever. As I've already stated, I will not be interested in collaboration. I will release when I've reached my milestone for feature completion, and this will be the first and final release.

 

This is awesome!

Link to comment
Share on other sites

I'm shocked that this project have reached this far...

 

I wouldn't burn my energy on something fancy and not necessary at this point (like shadow modification etc), but ability to implement them are all those little things that we missed in past. Skybox - wow, why they still left it pinch black?! Looks soo ugly on high angle zoom...

 

@curiosity, you have such deep client infrastructure understanding... :o

No doubt you would reach pre-re pre-lua milestone.

Really grateful that you working on it the way you do.

Link to comment
Share on other sites

To settle the question of open source once and for all: I'm planning to release the full source code sometime in the future. When the code is released, anyone who wishes to do so will be free to fork the project, add renewal features, organize their own development teams and whatever. As I've already stated, I will not be interested in collaboration. I will release when I've reached my milestone for feature completion, and this will be the first and final release.

music to my neko mimi :D

  • Upvote 1
Link to comment
Share on other sites

It's very helpful that Athena developers have attempted to keep backwards compatibility with older clients -- all despite an increasing pile of spaghetti code as seen in functions such as clif_set_unit_idle. With rAthena you can ostensibly compile the server for any given version network protocol. Of course, as people move on to newer clients, the old clients aren't really tested anymore and many things can go wrong. The result is that rAthena supports a lot of strange packet versions that are something of a mix between old and new. But in the end, the only thing that matters is that the server and client understands each other. Luckily it didn't take too much effort to get my client working with the latest trunk revision. Renewal seems to work also, although I got resource crashed from some new monster called "little poring" or something??

 

Below: me battling it out @ glast with rAthena pre-RE  B)

 

PUrWBJ1.jpg

  • Upvote 10
Link to comment
Share on other sites

How's the performance so far (load times, fps, etc), fps especially on notoriously laggy maps with lots of objects?

Looks like you've got particles working already, did you make your own animator or are you using RagEXE's... method, whatever the word is?

Are you rewriting the way the effects are done (primitives, particles, animations) to look as close to rag as possible or are you able to copy/paste from rag itself?

I'm genuinely curious about these kinds of things :]

Keep it up. Ob

 

ps: I'm taking a break from Seven Stars to work on other projects / tree of savior is consuming my life. ty for the kind words.

  • Upvote 1
Link to comment
Share on other sites

Load times are probably only slightly better than the regular client, since it's the same approach. The ground mesh is built on the main thread and must be completed before the map is displayed, while model loading runs on a separate thread and finishes later. On mobile phones it takes a couple of seconds to load a map, and on my PC a typical map loads in under one second. I believe map loading is mostly bound by I/O. No problems with FPS so far and so I haven't bothered to measure it. As mentioned I have both Direct3D or OpenGL implementations to support the renderer. I believe OpenGL is the most performant one since I've made some adjustments to heavily batch render calls.

 

Effects are for the most part identical to their originals effect. I can't quite copy-paste from the original client, but I can borrow the approach. Here's an example of how a simple effect is implemented:

void CRagEffect::IncAgility(void)
{
	matrix vtm;
	tlvertex3d vert;
	vector3d src;

	src = m_master->m_pos;
	vtm = g_modeMgr.GetGameMode()->m_view->m_viewMatrix;

	g_renderer->ProjectVertex(src, vtm, &vert);

	m_tlvertX = vert.x;
	m_tlvertY = vert.y;

	m_pos = m_master->m_pos;

	if (m_stateCnt == 0)
	{
		auto player = g_modeMgr.GetGameMode()->m_world->m_player;

		float z = m_pos.z - player->m_pos.z;
		float x = m_pos.x - player->m_pos.x;

		PlayWave("effect\\EF_IncAgility.wav", x, 0.0f, z, 250, 40, 1.0f);

		g_prim = LaunchEffectPrim(PP_2DTEXTURE, { 0, 0, 0 });
		g_prim->m_duration = m_duration;
		g_prim->m_longitude = 0;
		g_prim->m_speed = 1.5f;
		g_prim->m_accel = g_prim->m_speed / g_prim->m_duration * -1.2f;
		g_prim->m_widthSize = 40.0f;
		g_prim->m_heightSize = 20.0f;
		g_prim->m_alpha = 0;
		g_prim->m_maxAlpha = 200.0f;
		g_prim->m_alphaSpeed = g_prim->m_maxAlpha * 0.06666667f;
		g_prim->m_fadeOutCnt = g_prim->m_duration - 15;
		g_prim->m_texture = new CTexture*[g_prim->m_totalTexture]();
		g_prim->m_texture[0] = g_texMgr.GetTexture("effect\\agi_up.bmp", false);
	}

	if ((m_stateCnt % 2) == 0)
	{
		g_prim = LaunchEffectPrim(PP_3DCROSSTEXTURE, { 0, 0, 0 });
		g_prim->m_duration = 50;
		g_prim->m_matrix.MakeYRotation(GetRadian(rand() % 360));
		g_prim->m_deltaPos2 = vector3d(0.0f, 0.0f, (float)(rand() % 7 + 2)) * g_prim->m_matrix;
		g_prim->m_matrix.MakeXRotation(GetRadian(90));
		g_prim->m_speed = (rand() % 50 + 20) * 0.01f;
		g_prim->m_widthSize = (rand() % 60 + 30) * 0.1f;
		g_prim->m_heightSize = 0.18f;
		g_prim->m_alpha = 0;
		g_prim->m_maxAlpha = 200.0f;
		g_prim->m_alphaSpeed = g_prim->m_maxAlpha * 0.05f;
		g_prim->m_fadeOutCnt = g_prim->m_duration - 20;
		g_prim->m_texture = new CTexture*[g_prim->m_totalTexture]();
		g_prim->m_texture[0] = g_texMgr.GetTexture("effect\\ac_center2.tga", false);
	}
}
  • Upvote 3
Link to comment
Share on other sites

I like the shadows idea, may look into that...

That would certainly be a nice addition for modellers. If possible, even just for animated models so we don't have this:

pDfjzcq.gif

Link to comment
Share on other sites

That's quite the shitty attitude in the last few posts. Though I also would love to hear from curiosity, there's no point in trying to pressure him, and RO is alive and well.

Link to comment
Share on other sites

That's quite the shitty attitude in the last few posts. Though I also would love to hear from curiosity, there's no point in trying to pressure him, and RO is alive and well.

Ya Ro is alive and well, just look at the kro updates and NovaRO.

Link to comment
Share on other sites

Guys, I'm still working on the project on my own phase. If you are desperate to get access right now and happen to be a reputable member around here, PM me your GitLab user. Note that you gain nothing from code access at this point unless you're comfortable with C++ development. It's not a ready client replacement for your server.

  • Upvote 2
Link to comment
Share on other sites

Guys, I'm still working on the project on my own phase. If you are desperate to get access right now and happen to be a reputable member around here, PM me your GitLab user. Note that you gain nothing from code access at this point unless you're comfortable with C++ development. It's not a ready client replacement for your server.

Don't feel rushed to publish this, just work at your own pace. This is why I didn't announce my own project still.

Keep up the good work and finish when you finish.

Link to comment
Share on other sites

I want to follow this topic too.. Seems nice~

And BTW.. I think RO will stay alive.. I don't think it will be dead.. Since too many improvements.. And some 90's or 80's "kids" looking forward to play RO again since many games right now are quite "boring" and need to spend real money to make you strong (although some private server also same like this)..

So, I wish you luck~ ^_^

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.