PDA

View Full Version : |Tutorial| Desenvolvimento de um Launcher para MuOnline Utilizando C++ Moderno e Boas Práticas



marcoquadros
06-10-2024, 11:36 AM
Olá, pessoal!


Meu nome é Marco e sou arquiteto de software, ao longo dos anos, aprendi muito com a comunidade de MuOnline e desenvolvedores, especialmente sobre programação,
produtividade, empreendedorismo e obviamente sobre MuOnline, minha area de atuação profissional é relacionada a desenvolvimento de softwares embarcados, utilizando C++.

Espero que com esse tutorial, tambem consiga aprender mais sobre o desenvolvimento para esse nosso jogo que marcou minha infância, e foi um dos motivos a querem aprender programação,
o que me fez chegar aonde estou hoje.
Agora, sinto que chegou a minha vez de retribuir e contribuir com o conhecimento que adquiri.


Neste tutorial, vamos explorar juntos o desenvolvimento de um launcher para MuOnline utilizando C++ moderno e boas práticas de programação.Vamos abordar desde a configuração
do ambiente de desenvolvimento até a distribuição do produto final.
Meu objetivo é apresentar pelo menos um tópico por dia, podendo ser em formato de texto ou vídeo. Espero que este material seja útil e que possamos aprender e crescer juntos.

A seguir, está o sumário do tutorial:

Devido à limitação de tamanho do post, continuarei escrevendo o conteúdo como respostas subsequentes e fornecerei links para as postagens que contêm o conteúdo completo. A partir do índice 5. Funções e Procedimentos, o material será apresentado dessa forma.



Introdução

Objetivo do Tutorial
Estrutura do Tutorial


Configuração do Ambiente de Desenvolvimento

Escolhendo o IDE: Visual Studio 2022
Instalando Ferramentas Necessárias (SDK, Bibliotecas)
Configuração do Projeto no Visual Studio
Estrutura de Pastas do Projeto


Fundamentos da Programação em C++

​Introdução à Linguagem C++
Tipos de Dados
Variáveis e Constantes
Operadores
Estruturas de Controle (if, else, switch)
Laços de Repetição (for, while, do-while)
Boas Práticas de Programação e Clean Code


Estruturas de Dados

​Arrays e Strings
Vetores (std::vector)
Listas (std::list)
Mapas (std::map)
Conjuntos (std::set)
Utilização de Smart Pointers


Funções e Procedimentos (https://perfectzone.com.br/showthread.php?t=1303&p=4116&viewfull=1#post4116)

​Declaração e Definição de Funções
Parâmetros e Retorno de Funções
Funções Recursivas
Funções Lambda


Programação Orientada a Objetos (POO) (https://perfectzone.com.br/showthread.php?t=1303&page=2&p=4117&viewfull=1#post4117)

Conceitos Básicos (Classes e Objetos)
Encapsulamento
Herança
Polimorfismo
Interfaces e Classes Abstratas
Boas Práticas em POO e Clean Code


Manipulação de Arquivos (https://perfectzone.com.br/showthread.php?t=1303&page=2&p=4118&viewfull=1#post4118)

​Leitura e Escrita de Arquivos
Manipulação de Arquivos Binários e de Texto
Serialização e Desserialização
Boas Práticas de Manipulação de Arquivos


Desenvolvimento de Interfaces Gráficas (https://perfectzone.com.br/showthread.php?t=1303&page=2&p=4119&viewfull=1#post4119)

Introdução à Win32 API
Criação de Janelas e Diálogos
Manipulação de Controles (Botões, TextBoxes, etc.)
Gerenciamento de Eventos
Boas Práticas em Desenvolvimento de UI


Controle de Versão com GitHub (https://perfectzone.com.br/showthread.php?t=1303&page=2&p=4120&viewfull=1#post4120)

Introdução ao Git e GitHub
Configuração do Repositório
Fluxo de Trabalho com Git (commit, push, pull, branch)
Boas Práticas em Controle de Versão


Introdução ao Projeto Launcher para MuOnline

Visão Geral do Launcher
Requisitos Funcionais e Não-Funcionais
Estrutura de Diretórios do Projeto
Planejamento e Design do Código


Desenvolvimento do Launcher

Tela de Login e Registro
Verificação e Atualização de Arquivos do Cliente
Comunicação com o Servidor
Sistema de Patch e Atualizações
Boas Práticas em Desenvolvimento de Aplicações


Testes e Debugging

​Técnicas de Debugging no Visual Studio
Criação de Testes Unitários
Ferramentas de Teste e Automação
Boas Práticas em Testes e Debugging


Empacotamento e Distribuição

​Compilação e Linkagem
Criação do Instalador
Distribuição e Atualizações do Launcher
Boas Práticas de Distribuição


Conclusão

​Resumo dos Conceitos Aprendidos
Próximos Passos
Recursos Adicionais e Comunidades de Apoio



Espero que aproveitem e que este tutorial seja uma excelente ferramenta de aprendizado para todos. Vamos juntos criar algo incrível!

Ao longo dos dias, estarei atualizando cada seção do tutorial. Não vou direto ao ponto na criação do launcher em si,
pois meu objetivo é que você realmente aprenda e compreenda cada etapa do desenvolvimento,
em vez de apenas copiar e colar o código. Quero que você se torne um desenvolvedor mais habilidoso e confiante, capaz de aplicar esses conhecimentos em outros projetos.


Fiquem atentos às atualizações diárias e participem ativamente com comentários e perguntas. Vamos aprender e crescer juntos!

Inicio - 16/04/2024 - 08:00
Última Atualização: 17/04/2024 às 14:00 - Finalização da Parte Teórica até o Item 09

Laucher Design



https://lh3.googleusercontent.com/u/0/drive-viewer/AKGpihaI2kgXRE_PhDFjdvCXBV41I-WhfF8SnwpAKbu40pAFbmLa16EjYo8L5MbjSyjQkhynM8qmO1oi WL3DBiaDipGv_LcyXZRrXNQ=w2560-h911-rw-v1
https://imgur.com/a/qiogMzC

**Hidden Content: Check the thread to see hidden data.**

Creditos:
Marco Quadros: Desenvolvimento
@JanoDesign (https://perfectzone.com.br/member.php?u=3697): Design do Laucher

lkt22
06-10-2024, 02:14 PM
Uma ótima e rara contribuição, aguardamos os seguintes avanços!! thumbup

marcoquadros
06-10-2024, 03:02 PM
Pessoal Estou notando que tópico vai ficar gigantesco, se tiver alguma restrição quanto a isso no forum, por favor me avisem, se tiverem uma outra suguestão de como posso formatar melhor esse conteudo é muito bem vindo,

lkt22
06-10-2024, 04:14 PM
Pessoal Estou notando que tópico vai ficar gigantesco, se tiver alguma restrição quanto a isso no forum, por favor me avisem, se tiverem uma outra suguestão de como posso formatar melhor esse conteudo é muito bem vindo,
Talvez subir arquivos em pdf ou bloco de texto mesmo para cada tópico possa ser uma solução cabível…

marcoquadros
06-10-2024, 04:36 PM
Talvez subir arquivos em pdf ou bloco de texto mesmo para cada tópico possa ser uma solução cabível…

fiz esse teste, colocando uns spoilers, pensei em jogar par aum PDF, porem como pretendo fazer alguns videos para ficar mais explicativos, talvez não seja a melhor abordagem.

Vou fazer uma pesquisa pra analisar topicos como esse, para uma formatação mais adequada.

marcoquadros
06-10-2024, 11:56 PM
Melhorias no Projeto MuOnline Launcher

Olá a todos,
É com grande satisfação que venho anunciar uma significativa melhoria em nosso projeto MuOnline Launcher.
Buscando elevar o nível de profissionalismo e garantir uma experiência mais rica e visualmente atraente,
realizei a aquisição de um design exclusivo para o launcher, desenvolvido pela renomada JunoDesign.

Aquisição do Design

Recentemente, entrei em contato diretamente com o JanoDesign, reconhecido por sua excelência em
design gráfico e interfaces de usuário, para adquirir um layout que não só profissionalize nosso projeto,
mas também ofereça uma interface intuitiva e moderna para nossos usuários.
Escolhi um design que acredito atender perfeitamente às necessidades e expectativas da nossa comunidade.

Antes de finalizar a compra, tive uma conversa detalhada com o JanoDesign para garantir que a utilização do design
adquirido fosse compatível com a natureza open-source do nosso projeto. Fiquei feliz em receber uma resposta positiva,
confirmando que posso usar o design em nosso projeto open-source sem quaisquer restrições.

JanoDesign, Gostaria de expressar meus sinceros parabéns pelo excelente trabalho. A isnterfaces que você cria é simplesmente incrível
Sua habilidade em capturar a essência e traduzir isso em um design visualmente atraente e funcional é verdadeiramente admirável.

Agradeço também pela sua disposição em permitir o uso do design no nosso projeto open-source. Isso demonstra não apenas sua
competência profissional, mas também um grande espírito de colaboração e apoio à comunidade de desenvolvedores.

Mais uma vez, parabéns pelo excelente trabalho e muito obrigado pelo seu apoio.


Próximos Passos

Com o novo design em mãos, estou agora focado em integrar esta nova interface ao MuOnline Launcher.
Acredito que essa atualização não apenas melhorará a estética do projeto, mas também atrairá mais usuários e desenvolvedores.
Gostaria de expressar minha gratidão a todos que têm apoiado.
Continuo comprometido em desenvolver uma ferramenta robusta, funcional e agora ainda mais profissional.
Fiquem atentos às próximas atualizações e, como sempre, agradeço pelo contínuo apoio e contribuição.

joaovithor1
06-11-2024, 01:03 AM
Estarei acompanhando todos os passos desse tutorial, parabens pelo incentivo!

Mentor
06-11-2024, 01:28 AM
Bela iniciativa! A PZ agradece por essa excelente contribuição que você está proporcionando para a comunidade congratscongratscongrats

Estarei fixando esse tópico.

marcoquadros
06-11-2024, 01:34 AM
Bela iniciativa! A PZ agradece por essa excelente contribuição que você está proporcionando para a comunidade congratscongratscongrats

Estarei fixando esse tópico.

Obrigado Mentor, a ideia é sempre somar! quero ver esse projeto voando em breve!

marcoquadros
06-11-2024, 01:09 PM
Funções e Procedimentos

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-11-2024, 01:40 PM
6. Programação Orientada a Objetos (POO)

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-11-2024, 04:22 PM
7. Manipulação de Arquivos

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-11-2024, 04:46 PM
8. Desenvolvimento de Interfaces Gráficas


**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-11-2024, 04:48 PM
9. Controle de Versão com GitHub

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-11-2024, 05:01 PM
Pessoal,


Parte teórica foi finalizada! Essa etapa foi concluída rapidamente
graças às diversas referências que utilizei, minhas anotações pessoais e o auxílio
de ferramentas de IA, como o ChatGPT 4 e o GitHub Copilot (ambos em suas versões pagas com modelos mais avançados),
que me ajudaram a gerar alguns códigos maiores, e tambem algumas ideias de exemplosQuero deixar claro que
o uso dessas ferramentas não tira a credibilidade da revisão dos artigos postados,
pois todos os conteúdos foram cuidadosamente revisados por mim.


Com a parte teórica finalizada, vou agora organizar o projeto no GitHub para que
possamos começar efetivamente o desenvolvimento do launcher. Utilizem essa parte
teórica para consultas e referências, pois ela será essencial para entender o
código do projeto.


Estarei atualizando sempre este tópico com o changelog do projeto e, se necessário,
com explicações de partes mais críticas, assim como vem sendo feito nos tutoriais
da parte teórica.


A leitura, entendimento, fazer seus próprios testes e modificar os exemplos são
cruciais para aprender uma nova linguagem. Propositalmente, deixei alguns códigos
quebrados para que vocês possam resolvê-los e captar a essência do que é programar.
Foi assim que aprendi, e para mim foi excelente. Aprendi mais corrigindo erros do
que estudando efetivamente.


Vamos em frente!

marcoquadros
06-11-2024, 05:21 PM
Passo a Passo para colaboração no projeto

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-11-2024, 10:52 PM
ATUALIZAÇÃO

**Hidden Content: Check the thread to see hidden data.**
https://drive.google.com/file/d/1Q0-b9KJ53YNr4ldudDw9RK9Ac2m45VXl/view?usp=drive_link

marcoquadros
06-12-2024, 12:21 AM
ATUALIZAÇÃO

**Hidden Content: Check the thread to see hidden data.**

Farias
06-12-2024, 09:46 AM
Não li muito, passando rapido aqui, vai ter a source pra gente modificar pro nosso projeto amigo ?

marcoquadros
06-12-2024, 11:59 AM
Não li muito, passando rapido aqui, vai ter a source pra gente modificar pro nosso projeto amigo ?

Ja estou dispinibilizando, é um projeto open source,



Passo a Passo para colaboração no projeto


***Hidden content cannot be quoted.***

aqui está o repositorio. ou seja todo codigo, arquivo psd do Launcher vai estar disponivel.

marcoquadros
06-12-2024, 03:05 PM
Atualização Importante: Gerenciador de Pacotes vcpkg Adicionado

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-12-2024, 06:54 PM
Atualizações estrutura, organização

**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-12-2024, 11:27 PM
Implementação da Nova Classe SettingsWindow


**Hidden Content: Check the thread to see hidden data.**

Farias
06-13-2024, 12:33 AM
Marco, ta dando erros..

https://prnt.sc/NacEFNDFXJEm

marcoquadros
06-13-2024, 01:22 AM
Marco, ta dando erros..

https://prnt.sc/NacEFNDFXJEm

Farias, voce precisa fazer o procedimento que expliquei alguns topicos antes do vcpkg, para incluir os pacotes necessarios.
acredito no sabado eu já tenha evoluido mais no projeto, e com isso pretendo gravar um video geral, explicando a estrutura e o que estou usando.

Sugiro que antes de compilar e tentar rodar o projeto, leia os passos.
Sem isso vai ser dificil acompanhar.

marcoquadros
06-13-2024, 09:33 PM
Passo a passo em video da Compilação e execução do projeto.


**Hidden Content: Check the thread to see hidden data.**

marcoquadros
06-14-2024, 08:23 PM
MuOnline Launcher C++ - Configurando Mutex para abrir o main.exe somnete pelo Launcher.

**Hidden Content: Check the thread to see hidden data.**

Mentor
06-14-2024, 09:49 PM
Parabéns!! marcoquadros seus vídeo tutorial está bem explicativo :EWBTE

marcoquadros
06-15-2024, 12:58 AM
Parabéns!! @marcoquadros (https://perfectzone.com.br/member.php?u=3583) seus vídeo tutorial está bem explicativo :EWBTE

Valeuu meu mano! vou trazer mais alguns esse final de semana, se possivel!

Abraços!

mu2020
06-16-2024, 01:48 PM
good bro!